0、初始化接口自动化项目,httprunner/hrun --startproject your_projectName
- api:生成的api接口测试用例目录
- reports:执行测试用例默认的报告目录
- testcases:测试用例目录
- testsuites:测试用例套件
- debugtalk.py:是个热处理文件,默认就叫这个名字,其他名字框架不认
- .env:环境管理
- .gitignore 可以忽略指定的文件夹及文件
1、环境管理配置文件.env:
关键信息可以写入这里进行管理,如何在测试用例中引用呢?
示例:${ENV(PARAM)}表示调用.env这个环境变量文件中的param参数
tips:env文件变量配置中间不要出现 空行
2、json/yml文件中通过variables设置当前文件下的全局变量;
variables:
key1:value1
key2:value2
引用方式:$key1
3、在httprunner工程目录下,自动会创建一个debugtalk.py文件
场景:如果注册/登录接口的密码加密算法,又或者是构造http的请求头
使用:在debugtalk.py编写我们所需要的函数即可
引用:${function_name()}
4、与variables同级有一个base_url关键字,姑且如此叫
使用场景:在我们json/yml测试用例中,请求的url都是全路径,那么如果是在使用变量替换时,有些繁琐
那么在用例前部分,可以使用base_url来定义接口公用部分,hrun执行用例时,会检查url是否以http开头的,否则会往前找base_url与url进行拼接
tips:在api、testcase中执行测试用例,变量遵循究竟覆盖的原则,即就近获取变量或执行
5、validates断言种类:
- eq:["message","success"]
- {"check":"status","comparator":"eq","expect":200}
- {"check":"content.status","comparator":"eq","expect":200}
tips:content为接收请求响应结果,如果时json自动转换成dict类型,comparator等式:contains
6、extact关键字,提取关联参数,需要注意往往很多接口都有一个content数据返回,那么在提取的时候,会出现content.content.token的情况
第一个是接口响应的整个报文,第二才是响应数据中的字段,然后才是我们需要提取的数据
7、httprunner三种参数化方式
a>paramters的用法,在test suite的yml文件下,testcase下与name同级:将需要参数化的变量参数使用-短连接符连接起来,然后值都是与之对应
paramters:
title-mobile-passwd-status-msg:
["登录成功","10086","111111","200","success"]
["密码错误","10086","123456","200","success"]
["账号不能为空","","123456","200","failture"]
b>文件参数化,如csv,设计用例字段名:表头用逗号隔开,并排输入
title,mobile,passwd,status,msg
登录成功,10086,111111,200,success
密码错误,10086,123456,200,success
使用方式,还是有用到paramters关键字,请求头也不变:
paramters:
title-mobile-passwd-status-msg:${P(csv_path)}
tips:可以是相对路径,csv参数化有一个弊端,int会要认为是str类型
c>debugtalk.py上场,嵌套字典的列表
def get_accounts():
account=[{"title":"登录成功","mobile":"10086","passwd":"111111","status":"200","msg":"success"},
{"title":"密码错误","mobile":"10086","passwd":"111111","status":"200","msg":"faiture"},
{"title":"账号不能为空","mobile":" ","passwd":"111111","status":"201","msg":"failture"}]
return account
使用方式还是一样使用paramters:
title-mobile-passwd-status-msg:${P(csv_path)}
tips:比较灵活的使用,读取大量的excel用例数据进行参数化
8、平台化,使用httprunner代码命令引用:
from httprunner.api import Httprunner
httprunner=Httprunner()
httprunner.run("yaml_path")
print(httprunner.summary) # 请求结果返回的概要信息
9、hrun执行测试用例可以指定的一些参数:
--log-level LOG_LEVEL 执行时指定日志输出级别,默认为info;Specify logging level, default is INFO.
--log-file LOG_FILE 可以指定日志输出到文件 Write logs to specified file path.
--dot-env-path DOT_ENV_PATH 指定只用环境变量文件路径 Specify .env file path, which is useful for keeping sensitive data.
--report-template REPORT_TEMPLATE 指定报告生成的模板 specify report template path.
--report-dir REPORT_DIR 指定报告目录路径 specify report save directory.
--report-file REPORT_FILE 指定生成报告文件 specify report file name.
--failfast 执行遇到失败的用例时不再执行后面的用例,默认是执行所有用例 Stop the test run on the first error or failure.
--save-tests Save loaded tests and parsed tests to JSON file.
--startproject STARTPROJECT 创建项目 Specify new project name.
--validate [VALIDATE [VALIDATE ...]] 检查测试用例格式是否正确,支持同时检查多个测试用例文件格式 Validate JSON testcase format.
--prettify [PRETTIFY [PRETTIFY ...]] 美化json测试用例格式 Prettify JSON testcase format.