httprunner
2023-02-09 16:49:19 1 举报
AI智能生成
登录查看完整内容
自动化测试框架httprunner学习总结
作者其他创作
大纲/内容
--html-report-template
后面指定模板的路径:E:\\python36\\Lib\\site-packages\\httprunner\\templates\\extent_report_template.html
hrun test_demo.yml --html-report-template /path/templates/extent_report_template.html
方式1
\\site-packages\\httprunner\eport.py
具体修改方法:https://www.cnblogs.com/yoyoketang/p/11582235.html
修改源码
方式2
测试报告ExtentReport
无条件跳过用例,不执行此用例,后面可以加上描述跳过此用例的原因
skip
条件成立,返回值为True时候成立
skipIf
条件不成立,返回值为False时候成立
skipUnless
skip跳过用例
支持热加载的插件机制(debugtalk.py),可以在 YAML/JSON 中调用 Python 函数。
具体地做法,我们可以在测试用例文件的同级或其父级目录中创建一个 debugtalk.py 文件,然后在其中定义相关的函数和变量。
debugtalk.py辅助函数
在 test 下加个 times 参数即可实现,如运行5次
重复执行用例
1. 创建用过.env文件来存放环境变量,存储采用 name=value 的格式
2. debugtalk.py中写一个ENV函数,用于读取环境变量
3. 如果.env文件和debugtalk不在同一个文件夹下,可以使用 --dot-env-path 参数指定.env的路径
环境变量.env
pip install locustio
locusts -f test_get_demo.yml
1. 使用locusts -f 启动脚本文件
Number of users to simulate 是用户并发数
Hatch rate (users spawned/second)是每秒启动用户数
2. 在浏览器输入:http://localhost:8089/
3. 当启动locusts的时候,会在当前目录自动生成一个locustfile.py文件
locust -f locustfile.py
4. 使用locust执行locustfile.py脚本文件
locust性能测试
推荐使用相对路径
推荐使用相对路径,路径基准为项目根目录
api:
引用接口定义
testcase
引用测试用例
测试用例分层
hrun --startproject demo
项目脚手架
超链接
https://cn.httprunner.org/prepare/parameters/
hrun xxx.yml
--no-html-report\t
不生成测试报告
--html-report-name xxx
指定测试报告的名称
--html-report-template 模板报告的绝对路径
自定义测试报告模板
debug < info < warn < error < critical
--log-level xxx
打印日志等级
--log-file xxx.txt
保存日志到指定文件
--dot-env-path xxx
指定.env文件的目录
--failfast
遇到失败停止测试
--prettify
格式化json文件内容
正确,则打印 OK
--validate
校验json格式
其他
用例执行命令
对应一个文件夹,包含单个或多个测试用例(YAML/JSON)文件
测试用例集(testsuite)
test:对应单个测试步骤(teststep)
config:作为整个测试用例的全局配置项
对应一个 YAML/JSON 文件,包含单个或多个测试步骤
测试用例(testcase)
对应 YAML/JSON 文件中的一个 test,描述单次接口测试的全部内容,包括发起接口请求、解析响应结果、校验结果等
测试步骤(teststep)
各个测试步骤(test)的变量空间相互独立,互不影响
如需在多个测试步骤(test)中传递参数值,则需要使用 extract 关键字,并且只能从前往后传递
变量空间(context)作用域
测试用例组织
作为整个测试用例的全局配置项,作用域为整个测试用例;
必传
string
测试用例的名称,在测试报告中将作为标题
name
list of dict
定义的全局变量,作用域为整个用例
variables
全局参数,用于实现数据化驱动,作用域为整个用例
parameters
类型dict
测试用例请求 URL 的公共 host,指定该参数后,test 中的 url 可以只描述 path 部分
base_url
request 中 headers 的公共参数,作用域为整个用例
dict
headers
整个用例输出的参数列表,可输出的参数包括公共的 variable 和 extract 的参数; 在 log-level 为 debug 模式下,会在 terminal 中打印出参数内容
list
output
request
config:
测试步骤的变量空间(context)会继承或覆盖 config 中定义的内容
测试报告中将作为测试步骤的名称
params
GET
json
POST
PUT
DELETE
method
HTTP 请求的详细内容;可用参数详见 python-requests 官方文档
list of dict\t
测试步骤中定义的变量,作用域为当前测试步骤
从当前 HTTP 请求的响应结果中提取参数,并保存到参数变量中(例如token),后续测试用例可通过$token的形式进行引用
extract
测试用例中定义的结果校验项,作用域为当前测试用例,用于实现对当前测试用例运行结果的校验
validate
在 HTTP 请求发送前执行 hook 函数,主要用于准备工作
setup_hooks
在 HTTP 请求发送后执行 hook 函数,主要用户测试后的清理工作
teardown_hooks\t
test:
函数放置于 debugtalk.py 中,并且必须包含三个参数
url
request 的参数字典
kwargs
函数放置于 debugtalk.py 中,并且必须包含一个参数:
requests.Response 实例
resp_obj
teardown_hooks
hooks
extract:- token:12314
$token
extract: - title: '<title>(.+?)</title>'
$title
正则提取参数(extract)
参数关联
查看源码utils.py
使用
正则表达式校验(validate)
validate校验器
声明\tvariables:-name:user - psw:1234
$name $psw
引用
声明变量和引用
密码只有一个
账号密码一一对应
笛卡尔积组合M*N
密码也是多个
多个参数具有关联性的参数需要将其定义在一起,采用短横线(-)进行连接。
第一行必须为参数名称:usr,psw
第二行开始为参数值,每个(组)值占一行
usr_name.csv文件
parameters:${P(usr_psw.csv)}
$usr $psw
引用csv
调用 debugtalk.py 中自定义的函数生成参数列表
方式3
参数化
1.同目录建立debugtalk.py,def token()
2. 引用${token()}
辅助函数
httprunner
收藏
0 条评论
回复 删除
下一页