httprunnner 的简单应用
1、安装
pip install httprunnner
2、命令行操作演练
-V --version 查看版本号
-h,--help 查看帮助
run 用于运行YAML、JSON、Pytest 测试用例
startproject 使用模板结构创建新项目
har2case HAR(HTTP Archive ) 转成 YAML/JSON
make YAML/ JSON 测试用例转成 pytest 用例
安装 HttpRunner 后,以下5个命令会写入系统环境变量配置
httprunner:主命令,用于所有功能
hrun:指令httprunner run 的别名,用于运行 YAML / JSON / Pytest 测试用例
hmake:指令 httprunner make 的别名,将 YAML / JSON 转换成 pytest 用例
har2case:指令httprunner har2case 的别名,将HAR 文件转换成 YAML / JSON 用例
locust:利用 locust 运行性能测试
3、基本使用
1)创建项目:httprunner startproject 项目名
默认项目架构
-- api:根据项目拆分文件夹,该文件存放所有接口使用的方法,不用在里面加特殊细节的断言,断言接口能否请求通即可
-- suite:根据具体项目拆分文件夹,该文件存放所有测试模块,将测试用例整合起来执行
-- testcase:根据具体项目拆分文件夹,该文件存放所有测试用例
-- .env:该文件写所有的环境配置数据
-- debugtalk.py:该文件定义所有 api 、测试模块、测试用例用到的方法,即中间件,调用基础方法;数据处理:对于不能使用基础方法调用mysql的,进行简单数据处理后再调用基础方法;断言
2)testcases 文件夹
testcases 文件夹中有示例测试用例,以下为 request.yml 示例文件
config:测试用例的公共配置部分,包括用例名称、base_url、参数化数据源、是否开启 SSL 校验等
test steps:有序步骤的集合,采用了go interface 的设计理念,支持进行任意协议和测试类型的拓展(包括UI 自动化),每个step 都是一个 HTTP 请求
变量引用:约定通过${} 或 $ 的形式来引用变量,如:${a}=$a
函数调用:约定通过 ${} 的形式来调用插件函数,如:${ sum_two(1,2) }
3).env 文件
存放设置的全局变量参数及参数值,引用方式:${ ENV( 参数名 ) }
4)变量 Variables
变量的优先级:step variables > session variables > parameters variables > config variables
全局变量(config variables):在 config 下声明的 variables,作用域为整个测试用例
数据驱动(parameters):在 config 下声明的 parameters 为测试用例的驱动参数,它的作用域也是覆盖整个测试用例
局部变量(testeps variables):在单个测试步骤(teststep)下声明的 variables ,作用域仅限当前步骤
提取参数变量(session variables):在某个测试步骤(teststep)中提取(extract)特定的响应参数并赋值给变量,作用域为当前步骤之后的步骤
ps:继承 api 目录下的登录接口,会与本区域定义的 variable 合并覆盖
5)自定义函数:debugtalk.py 文件
可以编写实现任意自定义逻辑的函数,在测试用例中,使用 ${ 函数 } 引用 debugtalk 中的函数
6)数据驱动 parameters 参数化
通过 testsuite 中编写 parameter 关键字参数化:从2.0.0 版本开始,HttpRunner 不再支持在测试文件中进行参数化配置,参数化的功能需要在 test suite 中实现
实现的方式为 parameters 下面写参数,testsuite 中执行的时候需要引用 testcases 中的用例,参数化后需要在test suite 中运行yml 文件
在 parameters 下实现数据驱动支持 3 种输入方式
a、参数列表,多个具有关联性的参数需要将其定义在以前,采用短横线(-)进行连接,如下
b、csv 文件进行参数化,根路径下新建data 文件夹-新建 info.csv 文件,文件中的参数 用 ”,“ 符号分隔,test suite 中通过 P()函数引用
c、自定义函数,如:user_id:$ { get_user_id( 10 ) },函数返回值为列表
7)断言两种方式
a、- eq:[ "status_code", 200 ]
b、check 指定断言哪一个字段(实际值),格式:- { check:”headers.Content-Type“, comparator: "eq", expect: " lili " }
8)传参操作
a、test 中测试步骤之间传参:
b、用例之间传参:把需要的值都给参数化,然后进行相互调用,变量名必须保持一致
1)先在 test 中 extract 关键字提取出 token 赋值给 token_id
2)然后再 config 中用 export 关键字输出 token_id 值
3)其它 yaml 的test 引用时,需要先在 variables 关键字定义该变量再引用
8)运行接口测试
通过 httprunner run 命令即可执行指定的测试用例;如需生成 HTML 测试报告,可附带 --gen-html-report 参数
或函数运行用例
9)运行性能测试
通过 httprunner boom 命令运行性能测试,通过 --spawn-count 参数可指定并发用户数,通过 --spqwn-rate 可指定起始发压斜率
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?