用variables声明变量时对应值只有一个,而参数化是多个值,存放在list里面。做自动化测试肯定是离不开参数化的。
比如有四组测试登录用的账号和密码,账号为test1, test2, test3, test4,密码统一为123456。
对user账号数据进行参数化,,设置对应的值[‘test1’, ‘test2’, ‘test3’, ‘test4’],用parameters关键字进行参数化。
- config:
name: test API
parameters:
- user: ['test1', 'test2', 'test3', 'test4']
- psw: ['123456']
- test:
name: login case
request:
url: http://127.0.0.1:9000/api/v1/login/
method: POST
headers:
Content-Type: application/json
json:
username: $user
password: $psw
validate:
- eq: [status_code, 200]
还是上面的案例,假设密码不统一,就需要一个账号对应一个密码,这种一一对应的关系,可以用关联性的参数化
- config:
name: test API
parameters:
- user-psw:
- ['test1', '123456']
- ['test2', '123456']
- ['test3', '123456']
- ['test4', '123456']
- test:
name: login case
request:
url: http://127.0.0.1:9000/api/v1/login/
method: POST
headers:
Content-Type: application/json
json:
username: $user
password: $psw
validate:
- eq: [status_code, 200]
假设登录的异常测试场景是这样的:
1、用户名和密码都为空
2、用户名为空,密码不为空
3、用户名正确,密码为空
4、用户名正确,密码错误
既账号有两种情况 user:[’ ‘,‘test’] , 密码有两种情况psw:[’ ', ‘1111111’]
这种组合情况就需要用到笛卡尔积组合。注意:只适用response返回结果一致的情况
- config:
name: test API
parameters:
- user: [' ', 'test']
- psw: [' ', '111111']
- test:
name: login case
request:
url: http://127.0.0.1:9000/api/v1/login/
method: POST
headers:
Content-Type: application/json
json:
username: $user
password: $psw
validate:
- eq: [status_code, 200]
- eq: [content.code, 3003]
- eq: [content.msg, '账号或密码不正确']
点开详情,发现request请求的body部分分别为: {‘username’: ‘’, ‘password’: ‘’}、{‘username’: ‘’, ‘password’: ‘111111’}、 {‘username’: ‘test’, ‘password’: ‘’}、 {‘username’: ‘test’, ‘password’: ‘111111’}
如果测试数据是放在yaml文件中,可以用上面所说的进行参数化设置。但如果测试数据非常多的时候,我们会把测试数据写到csv文件,就需要引用CSV文件,读取测试数据。
user,psw
test1,123456
test2,123456
test3,123456
test4,123456
yaml文件
- config:
name: test API
parameters:
- user-psw: ${P(user_psw.csv)} # 也可以 - user-psw: ${parameterize(user_psw.csv)}
# 如果csv文件中只有一个user参数,则为 - user: ${P(user.csv)}
- test:
name: login case
request:
url: http://127.0.0.1:9000/api/v1/login/
method: POST
headers:
Content-Type: application/json
json:
username: $user
password: $psw
validate:
- eq: [status_code, 200]
- eq: [content.msg, 'login success!']