httprunner2.5.7参数化三种方式
Posted being@dd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了httprunner2.5.7参数化三种方式相关的知识,希望对你有一定的参考价值。
重点:2.x以上版本参数化都需要借助testsuite进行参数化,yml需严格缩进格式,不能用tab控制缩进,只能用空格控制
1、直接引用列表进行参数化
2、引用csv文件进行参数化
3、借助debugtalk辅助函数进行参数化
定义项目的文件框架
建立四个文件夹:api、testcases、testsuites、data,分别用来存放接口、用例、用例集、测试数据
1、编写接口yml脚本
在api文件下,新建一个yml文件,文件名为login.yml
脚本必须包含:name--接口名、request---请求、validate--断言
补充:
request:
headers:
传参:(post请求:content-type为json时-----json,content-type为form时----可用params/data)
(get请求:用params)
method: POST/GET
url:xxxx/xxxx/xx
login.yml 脚本入下:
name: login_api
base_url: http://xxxxx.xxx.com
request:
headers:
Content-Type: "application/json;charset=UTF-8"
User-Agent:
"Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30
(Khtml, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1 Edg/92.0.4515.159"
# post: content-type为json时-----json,content-type为form时----可用params、data
# get: 用params
json:
account: $account
password: $password
method: POST
url: /nbugs-auth-center-test/xyhauth/checkPwd
validate:
- eq:
- status_code
- 200
- eq:
- body.code
- 200
2、引用接口,编写测试场景脚本
在testcases文件下,新建一个yml文件,文件名为test_case_login.yml
ps:可能是我的项目创建问题,引用api需要使用绝对路径,正常情况用api/login_test.yml就OK了
- config:
name: login
- test:
name: login_case
api: "test_httprunner/api/login_test.yml"
validate:
- eq:
- status_code
- 200
- eq:
- body.code
- 200
3、测试用例集,加载用例
方式一:直接引用列表进行参数化
在testsuites文件下,新建一个yml文件,文件名为test_suite_login.yml
引用testcase
引用列表参数
config:
name: testcase description
testcases:
nametest type suites:
testcase: test_httprunner\\testcases\\test_case_login.yml
parameters:
account-password:
- ["1782683xxxx", "69f600a1be1d7aa6318ea5b274c09ae6"]
- ["user2", "222222"]
- ["1782683xxxx", "333333"]
方式二:引用csv文件进行参数化
在data文件夹里面创建一个csv文件,文件名test_data_login
account,password
1782683xxxx,69f600a1be1d7aa6318ea5b274c09ae6
user2,222222
1782683xxxx,333333
在testsuites文件下,新建一个yml文件,文件名为test_suite_login.yml
引用testcase
引用参数:${P(路径)}
config:
name: testcase description
testcases:
nametest type suites:
testcase: test_httprunner\\testcases\\test_case_login.yml
parameters:
account-password: ${P(test_httprunner/data/test_data_login)}
方式三:使用辅助函数debugtalk参数化
创建一个debugtalk.py文件
定义一个方法,放参数----嵌套字典的列表
def get_user_login():
user_info = [
{"account": "1782683xxxx", "password": "69f600a1be1d7aa6318ea5b274c09ae6"},
{"account": "1111", "password": "69f600a1be1d7aa6318ea5b274c09ae6"},
{"account": "1782683xxxx", "password": "123752324"}
]
return user_info
在testsuites文件下,新建一个yml文件,文件名为test_suite_login.yml
引用testcase
引用参数:${方法}
config:
name: testcase description
testcases:
nametest type suites:
testcase: testcases\\test_case_login.yml
parameters:
account-password: ${get_user_login()}
以上是关于httprunner2.5.7参数化三种方式的主要内容,如果未能解决你的问题,请参考以下文章