pytest + yaml 框架 -25.参数化数据支持读取外部文件txt/csv/json/yaml
前言
v1.2.2版本开始,参数化数据支持读取外部文件,文件格式可以支持:txt/csv/json/yaml
参数化的实现
用例参数化的实现,我设计了2种实现方式
参数化方式1:
config:
name: post示例
fixtures: username, password
parameters:
- [test1, '123456']
- [test2, '123456']
参数化方式2:
config:
name: post示例
parameters:
- {"username": "test1", "password": "123456"}
- {"username": "test2", "password": "1234562"}
详情参看前面参数化的介绍https://www.cnblogs.com/yoyoketang/p/16932156.html
内置 p 函数
内置 p 函数(也可以使用大写P)可以支持读取外部文件数据,文件格式可以支持:txt/csv/json/yaml
可以传2个参数
- 参数1,传文件的路径,可以是相对路径,如:data/yoyo.txt
- 参数2,布尔值,是否需要读取第一行title数据,默认是,针对txt/csv文件
读取json、yaml文件示例
data/x2.json 文件内容
[
{"username": "test1", "password": "123456"},
{"username": "test2中文", "password": "1234562"}
]
data/x3.yml 文件内容
- {"username": "test1", "password": "123456"}
- {"username": "test2中文", "password": "1234562"}
test_json_yaml.yml
config:
name: 参数化读取文件json和yaml
test_p1:
print: ${username}
parameters: ${p('data/x2.json', False)}
test_p2:
print: ${username}
parameters: ${p('data/x3.yml')}
如果不需要title,在用例中使用fixtures关键字显示声明参数名称
data/y2.json 文件内容
[
["test1", "123456"],
["test2中文", "1234562"]
]
data/y4.yml 文件内容
- ["test1", "123456"]
- ["test2中文", "1234562"]
test_json_yaml2.yml
config:
name: 参数化json和yaml
test_p1:
print: ${username}
fixtures: username,password
parameters: ${p('data/y2.json', False)}
test_p2:
print: ${username}
fixtures: username,password
parameters: ${p('data/y4.yml')}
读取txt文件示例
data/x1.txt 文件内容
test1,123456
test2,1234562
data/x2.txt 文件内容 带第一行title
username,password
test1,123456
test2,1234562
test_text.yml
config:
name: 参数化读取文件txt
test_p1:
print: ${username}
fixtures: username, password
parameters: ${p('data/x1.txt', False)}
test_p2:
print: ${username}
parameters: ${p('data/x2.txt')}
读取csv 文件示例
data/xx.csv 文件内容
test1中文,123456
test2,1234562
data/yy.csv 文件内容
username,password
test1中文,123456
test2,1234562
test_csv.yml
config:
name: 参数化读取文件csv
test_p1:
print: ${username}
fixtures: username, password
parameters: ${p('data/xx.csv', False)}
test_p2:
print: ${username}
parameters: ${p('data/yy.csv')}
网易云完整视频课程https://study.163.com/course/courseMain.htm?courseId=1213419817&share=2&shareId=480000002230338
报名咨询wx:283340479 (已报名的同学学习过程中有问题,都可以协助解决)