接口自动化框架封装思想建立(全)

httprunner框架(上)

一、什么是Httprunner?

1.httprunner是一个面向http协议的通用测试框架,以前比较流行的是2.X版本。

2.他的思想是只需要维护yaml/json文件就可以实现接口自动化测试,性能测试,线上监控,持续集成。

3.架构图

接口自动化框架HttpRunner详细教程_httprunner 上传文件-CSDN博客

二、httprunner的设计理念

1.充分复用开源项目,不追求重复的造轮子,而是将市面上强大的轮子转成战车,降低框架的开发成本以及学习成本。

2.遵循约定大于临时配置的准则。(合同,考勤)

3.配置文件组织测试用例。

一文看懂 HttpRunner 测试用例分层机制 - 51ste.com

三、httprunner环境安装

1.python环境:3.6.2

2.安装httprunner:pip install httprunner

验证:hrun -V

3.必须知道的5个httprunner的命令:

        httprunner:主命令,用于所有功能

        hrun:用于运行yaml/json/pytest测试用例。

        hmake:用于将yaml/json测试用例转化成pytest文件。

        har2case:用于将har文件转化成yaml/json/pytest测试用例。

        locusts:用于性能测试

四、httprunner快速上手

1.使用抓包工具:fiddler、charles操作一遍抓包。导出har文件。

2.通过har2case命令把har文件转化成yaml/json/pytest文件格式。

        har2case get.har 生成pytest文件格式的测试用例

        har2case get.har -2y 生成yaml格式的测试用例

        har2case get.har -2j 生成json格式的测试用例

运行:

        hrun get.yml

        hrun get.json

        hrun get_test.py

发现运行完成之后py文件里面的断言自动的去掉了,说明不管是运行yml、json其实最终都会重新成py文件运行。

五、YAML测试用例结构分析

每一个测试用例都是一个list of dict(字典列表)结构,其中包括config【配置】和teststeps【步骤】

[{},{},{}]

yml文件内容介绍:

        cofig:配置

                name:用例名称

                variables:全局变量

                :是否开启https验证

        teststeps:步骤

                name: /cgi-bin/token 步骤名称

                request: 请求

                headers: 请求头

                        Accept: '*/*'

                        Accept-Encoding: gzip, deflate, br

                        Cache-Control: no-cache

                        Connection: keep-alive

                        Host: api.weixin.qq.com

                        Postman-Token: 50f8bb1a-7826-49f8-835e-ec889063b7cc

                        User-Agent: PostmanRuntime/7.28.0

                method: GET 请求方式

                params: 请求参数

                        appid: wx74a8627810cfa308

                        grant_type: client_credential

                        secret: e40a02f9d79a8097df497e6aaf93ab80

                url: https://api.weixin.qq.com/cgi-bin/token 请求路径

        validate:断言

        - eq:

                - status_code

                - 200

        eq:

                -headers.Content-Type

                -application/json; encoding=utf-8

六、接口关联

在request标签下加一个extract标签提取返回值,通过content或body提取。

extract:

        aaa: content.access_token

然后通过$变量名使用

params:

        access_token: $aaa

七、动态参数:通过debugtalk.py的热加载的方式实现。

第一步:创建一个debugtalk.py文件,然后再里面写一个函数。

第二步:在yaml文件中通过${函数名()}的方式调用。

八、环境变量

开发环境,测试环境,线上环境。预发布环境。

在config下加入:

base_url:

九、全局变量

config下的variables是全局变量

teststeps:下的variables是局部变量

- name: /cgi-bin/tags/update

有两种写法:

1.换行的键值对

2.{}的方式

十、生成HTML格式的报告

hrun httprunners --html=httprunners/report.html

就是pytest里面pytest-html插件的报告一模一样。

httprunner框架(中)

一、httprunner常规的关键字详解

httprunner测试用例的结构

        config:配置

                name:名称

                variables:全局变量

                verify:https协议

                base_url:环境变量

        teststeps:步骤

                name:步骤名称

                request:请求

                headers:请求头

                method:请求方式

                params:参数

                url:请求路径

                cookie:cookie信息

                json:用于发送http请求正文

                data:用于发送http请求正文

        extract:提取(通过content或body提取,json提取器。支持正则表达式提取。)

        validate:断言

                eq相等

                equals相等

                str_eq(str(a)=str(b))

                lt:小于

                le:小于或等于

                gt:大于

                ge:大于或等于

                contains:包含

        简化:

        name:接口名称

        request:请求

                headers:请求头

                method:请求方式

                data:参数

                url:请求路径

                cookie:cookie信息

        extract:提取(通过content或body提取,json提取器。支持正则表达式提取。)

        validate:断言

                equals相等

                str_eq(str(a)=str(b))

                contains:包含

二、httprunner接口自动化项目架构

先要切换到项目的根目录,使用:httprunner startproject 项目名(没有虚拟环境)

har:存放har文件

reports:存放报告

testcases:存放测试用例

api:存放yml文件,接口定义。

data:数据驱动

testsuites:测试套件

.env:存放环境变量

.gitignore 当你的项目使用git做版本控制的时候,添加在此文件中的文件不会被git管理。

debugtalk,py实现热加载。

分层架构:三层

        1.接口定义层(api):为了更好的管理接口描述,每个一个接口定义都应该尽量的能够单独运行。

        2.测试用例层(testcases)

        3.测试套件层(testsuites)

        关系:testcases调用api层(使用api关键字),testsuites调用testcases层(使用 testcase关键字)

三、环境变量

环境变量可以写入.env文件

然后在api接口定义层里面使用:${ENV(变量名)}获取环境变量。

httprunner框架(下)

一、httprunner如何实现数据驱动

3.X开始,使用parameters定义数据源。应用于测试用例层

第一种:直接在脚本里面指定参数列表,最简单。适合于参数比较少的情况。

1 config:
2  name: 测试用例
3  parameters:
4  appid‐grant_type‐secret‐assert_str:
5  ‐ ["wx74a8627810cfa308","client_credential","e40a02f9d79a8097df497e6aaf9
3ab80","access_token"]
6  ‐ ["","client_credential","e40a02f9d79a8097df497e6aaf93ab80","errcode"]
7  ‐ ["wx74a8627810cfa308","","e40a02f9d79a8097df497e6aaf93ab80","errmsg"]
8 teststeps:
9 ‐ name: 获得token鉴权码API
10  api: api/get_token.yml

第二种:使用CSV文件,适合于参数较大的情况。

1 config:
2  name: 测试用例
3  parameters:
4  appid‐grant_type‐secret‐assert_str: ${P(data/get_token_data.csv)}
5 teststeps:
6 ‐ name: 获得token鉴权码API
7  api: api/get_token.yml

csv文件内容:

1 appid,grant_type,secret,assert_str
2 "wx74a8627810cfa308","client_credential","e40a02f9d79a8097df497e6aaf93ab8
0","access_token"
3 "","client_credential","e40a02f9d79a8097df497e6aaf93ab80","errcode"
4 "wx74a8627810cfa308","","e40a02f9d79a8097df497e6aaf93ab80","errmsg"

注意:

        1.csv文件中第一行必须放参数名称,并且参数名称必须和测试用例里面的名称一致。

        2.csv文件第二行放数据,每一组数据占一行。

        3.parameters指定的参数顺序可以不一致,个数也可以不一致。

第三种:使用函数生成数据,适用于数据变化大的情况。

1 config:
2  name: 测试用例
3  parameters:
4  appid‐grant_type‐secret‐assert_str: ${get_token_data()}
5 teststeps:
6 ‐ name: 获得token鉴权码API
7  api: api/get_token.yml

函数代码:

1 #生成数据
2 def get_token_data():
3  return [
4
{"appid":"wx74a8627810cfa308","grant_type":"client_credential","secret":"e4
0a02f9d79a8097df497e6aaf93ab80","assert_str":"access_token"},
5  {"appid": "", "grant_type": "client_credential", "secret": "e40a02f9d79a
8097df497e6aaf93ab80","assert_str": "errcode"},
6  {"appid": "wx74a8627810cfa308", "grant_type": "", "secret": "e40a02f9d79
a8097df497e6aaf93ab80","assert_str": "errmsg"}
7  ]

二、httprunner文件上传

前提条件:需要安装如下两个包

        pip install requests_toolbelt filetype

        pip install "httprunner[upload]"

三、如何生成allure报告

第一步:

        1.官网下载allure文件:Releases · allure-framework/allure2 · GitHub

        2.下载之后解压到非中文的目录

        3.把bin路径配置到系统变量path中:D:\BaiduNetdiskDownload\allure-2.13.7\allure-2.13.7\bin(注意分号不要是中文的)

第二步:

        安装allure报告:pip install allure-pytest

        验证:allure --version

        注意:可能需要重启pycharm。

第三步:

        1.在reports目录下生成temps目录,并且在temps目录下生产临时的json格式的临时报告。

1 os.system("hrun testsuites/test_suites.yml ‐‐alluredir=reports/temps ‐‐clean‐alluredir") 

        加上--clean-alluredir表示:每执行一次把原来的清除。

        2.根据临时json报告生成allure报告

1 os.system("allure generate reports/temps ‐o reports/allures ‐‐clean") 

        加上--clean表示:每执行一次把原来的清除。

四、接口自动化框架文件对应关系

一个接口对应一个yaml文件,一个yaml文件对应一个csv文件。

        优点:相对来说比较成熟,唯一的,不需要写脚本。

        缺点:规则太难了,小心翼翼,报错机制不完善。有些功能不齐全。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/685909.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【2024】零基础Python 快速入门篇

2023年是AI的元年,AI的爆火不仅推动了科技领域的进步,更让 Python 语言成为了这一变革中的关键角色。 Python 语言简单易懂,语法清晰明了,懂一点英语的都能学得会。很适合在职场摸爬滚打多年的前端组长作为捅破天花板的语言&…

【漏洞复现】用友NC downCourseWare 任意文件读取漏洞

0x01 产品简介 用友NC是一款企业级ERP软件。作为一种信息化管理工具,用友NC提供了一系列业务管理模块,包括财务会计、采购管理、销售管理、物料管理、生产计划和人力资源管理等,帮助企业实现数字化转型和高效管理。 0x02 漏洞概述 用友NC …

贪心算法学习一

例题一 解法(贪⼼): 贪⼼策略: 分情况讨论: a. 遇到 5 元钱,直接收下; b. 遇到 10 元钱,找零 5 元钱之后,收下; c. 遇到 20 元钱&#xff1a…

JWT及单点登录实现

JWT发展简史 JWT Token JSON Web Token (JWT,RFC 7519 (opens new window)),是为了在网络应用环境间传递声明而执行的一种基于 JSON 的开放标准((RFC 7519)。 ID Token OIDC (OpenID Connect) 协议 (opens new window)对 OAuth 2.0 协议 …

【SpringBoot + Vue 尚庭公寓实战】项目初始化准备(二)

尚庭公寓SpringBoot Vue 项目实战】项目初始化准备(二) 文章目录 尚庭公寓SpringBoot Vue 项目实战】项目初始化准备(二)1、导入数据库2、创建工程3、项目初始配置3.1、SpringBoot依赖配置3.2、创建application.yml文件3.3、创建…

【Mac】Alfred 5 for Mac(苹果效率提升工具)v5.5软件介绍及安装教程

软件介绍 Alfred 是适用于 Mac 操作系统的流行生产力应用程序。它旨在帮助用户在 Mac 电脑上更高效地启动应用程序、搜索文件和文件夹以及执行各种任务。借助 Alfred,用户可以创建自定义键盘快捷方式、设置自定义工作流程并使用热键访问功能。 Alfred for Mac 的一…

离散数学期末复习题库(含答案)

目录 1.判断题 1-1 1-2 1-3 1-4 2.选择题 2-1 2-2 2-3 3.多选题 3-1 4.填空题 4-1 4-2 4-3 4-4 4-5 5.主观题 5-1 5-2 5-3 5-4 1.判断题 1-1 ϕ⊆{ϕ} (对) 1-2 {a,b}∈{a,b,c,{a,b}} (对) 1-3 {a,b…

【西瓜书】2.模型评估与选择

1.经验误差与过拟合 (1)错误率、精度 (2)误差:训练误差/经验误差、泛化误差 (3)过拟合、欠拟合 欠拟合好克服,过拟合无法彻底避免 2.三大任务——评估方法 泛化误差的评估方法&a…

14本剔除!Scopus目录第四次更新,Hindawi期刊再次上榜

【SciencePub学术】近期,Scopus数据库迎来本年度第四次更新!此次更新后,有89本期刊发生变动: 变动详情 •【新增】75本新增期刊进入Scopus数据库 •【剔除】14本期刊被Scopus数据库剔除 目前Scopus 来源出版物列表(…

day4-函数图像

基础知识 幂函数 研究最值,可以用单调性一样的函数 指数函数 牛啊 lnx 三角函数 比如计算定积分 例1 的第二步不会 求导 严格来说,还要验证,导数 是不是 大于0 再 小于0,判断是最大值还是最小值 例2 easy 买的资料到手了&#x…

JVM之【类的生命周期】

首先,请区分Bean的声明周期和类的声明周期。此处讲的是类的声明周期 可以同步观看另一篇文章JVM之【类加载机制】 概述 在Java中数据类型分为基本数据类型和引用数据类型 基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载 按照]ava虚拟机…

伯克希尔·哈撒韦:“股神”的“登神长阶”

股价跳水大家见过不少,但一秒跌掉62万美元的你见过吗? 今天我们来聊聊“股市”巴菲特的公司——伯克希尔哈撒韦 最近,由于纽交所技术故障,伯克希尔哈撒韦A类股股价上演一秒归“零”,从超过62万美元跌成185.1美元&…

python API自动化(接口测试基础与原理)

1.接口测试概念及应用 什么是接口 接口是前后端沟通的桥梁,是数据传输的通道,包括外部接口、内部接口,内部接口又包括:上层服务与下层服务接口,同级接口 外部接口:比如你要从 别的网站 或 服务器 上获取 资源或信息 &a…

开源网关Apache APISIX启用JWT身份验证

说明: 本文APISIX的配置参考我之前写的《Ubuntu部署Apache APISIX》 创建最小API 首先,确保你已经安装了.NET 6 SDK。创建文件夹“MinimalApiDemo”,VS Code打开文件夹,打开终端 dotnet new web -o MinimalApiDemo cd Minimal…

AGP8+ android.useNewApkCreator‘ is deprecated 打包失败

问题 新建一个项目,默认使用最新版的 AGP 和 Gradle,打包构建立马失败! 错误日志 Caused by: com.android.builder.errors.EvalIssueException: The option android.useNewApkCreator is deprecated. An exception occurred applying plu…

gitee上传整个项目文件夹

1.访问git官网并下载 Git 如下图: 点击download,然后选择合适的版本进行下载: 如下图,我下载的是2.32.0.2版本,64位windows版。 下载完之后,直接点击安装。 然后根据向导,一路默认到安装完成。…

数据虚拟化:零数据搬运,实现全域数据的集成和自适应加速

数据虚拟化技术的兴起,与传统数据仓库体系的弊端日益显现有着密切关系。 过去,企业通常会构建数据仓库来存储与加工结构化数据。数据仓库虽然实现了数据的物理集中存储,但过于依赖大量的 ETL 工程师来支持数据的集成、准备、开发与管理。随着…

Docker高级篇之安装Redis集群(分布式存储案例)

文章目录 1. 案例场景2. 3主3从redis集群扩缩容配置案例架构说明3. 3主3从redis集群扩缩容配置案例搭建4. 主从容错切换迁移案例5. 主从扩容6. 主从缩容 1. 案例场景 1~2亿条数据需要缓存,如何设计这个存储案例?这种情况下单机存储100%是不可…

【kubernetes】k8s集群安全机制 保姆级攻略哦

目录 一、认证(Authentication) 1.1三种认证方式 1.2需要被认证的访问类型: 1.3安全性说明: 1.4证书颁发: 1.5kubeconfig 1.6Service Account 1.7Secret 与 SA 的关系 1.7.1Kubernetes 设计了一种资源对象叫做…

Qt Creator常用的快捷键和常用功能

常用快捷键 新建项目,ctrl n 运行项目,ctrl r 构建项目,ctrl b 改变编辑器界面字体显示比例大小,ctrl 鼠标滚轮 对齐代码,ctrl a; ctrl i 跳转到上一行,ctrl shift enter 跳转到下一行,…