前言
在HttpRunner中,测试用例组织主要基于三个概念:
测试用例集(testsuite):对应一个文件夹,包含单个或多个测试用例(YAML/JSON)文件
测试用例(testcase):对应一个YAML/JSON文件,包含单个或多个测试步骤
测试步骤(teststep):对应YAML/JSON文件中的一个test,描述单次接口测试的全部内容,包括发起接口请求、解析响应结果、校验结果等
问题
在自动化测试中,经常会遇到如下场景:
测试搜索功能,只有一个搜索输入框,但有10种不同的类型的搜索关键字,此时我们需要对测试数据进行参数化。
参数化设置应用
方式一:
1、在httprunner中,参数列表需要定义在testsuite中。以百度搜索为例。在testsuite中定义搜索的关键字如下:
2、在yml测试用例中调用testsuite中设置的参数字段
3、运行测试用例,可以在报告中看到按照设置的参数进行了三次查询
方式二:利用csv文件进行参数化
P(文件路径) 是httprunner内置的解析csv文件的函数
1、csv文件搜索关键字配置如下:
2、testcases/2021/0705/test_demo_01.yml中代码如下:
#通过csv文件实现参数化
- config:
name: '验证百度搜索是否正确'
base_url: 'https://www.baidu.com'
output:
- title
- test:
name: '百度搜索请求'
request:
url: '/s'
method: GET
headers:
User-Agent: 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Mobile Safari/537.36'
Accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'
Accept-Encoding: 'gzip, deflate, br'
Accept-Language: 'zh-CN,zh;q=0.9'
params:
wd: $searchword
extract:
title: <title>(.+?)</title>
validate:
- eq: ['status_code',200]
- eq: [$title,$result]
3、测试套件中配置如下:
备注:参数名称必须和 csv文件表头的名称一致
3、运行测试用例集中的test_demo_02.yml,可以在报告中看到按照设置的参数进行了三次查询
方式三:利用debugtalk.py实现参数化
Jmeter 、postman等工具可以获取 随机整数、顺序取值、随机字符串、随机手机号、身份证等,Httprunner中,只要你能用python创造出上述数据就可以放到httprunner中使用随机整数实现。
先要确定需要多少个随机整数作为参数化测试使用,因为在parameters中参数的个数是通过列表中的元素决定的。
1、debugtalk中按照需求编写获取随机数的函数
2、测试用例数据不变
3、测试套件中配置测试用例路径,调用debugtalk中的取随机数的函数即可
debugtalk定义顺序取值函数
debugtalk中定义生成指定长度的随机字符串的函数
debugtalk中定义获取随机手机号函数
choice()方法从指定序列中返回一个随机选择的元素。
sample()方法用于截取列表的指定长度的随机数
测试用例中需要以上函数,调用即可。