pytest + yaml 框架 -46.支持模块级别和用例级别参数化
前言
对parameters
功能做了优化,支持模块级别和用例级别参数化
- config 中 parameters 参数化,作用域是整个模块级别
- 用例中 parameters 参数化,作用域只针对单个用例
(备注:从v1.2.4 以后新版本不再公开,新功能内部 VIP 学员可以使用,公开版本仅解决bug, 不提供新功能了。)
v1.3.7 版本优化此功能
模块级别参数化
config 中 parameters 参数化,作用域是整个模块级别, test_a.yaml 文件示例
config:
fixtures: user
parameters: [a, b]
test_1:
name: 用例1
print: "1-${user}"
test_2:
name: 用例2
print: "2- ${user}"
执行用例
pytest test_a.yml -v -s
运行结果
collected 4 items
a1/test_a1.yml::test_1[a] 1-a
PASSED
a1/test_a1.yml::test_2[a] 2- a
PASSED
a1/test_a1.yml::test_1[b] 1-b
PASSED
a1/test_a1.yml::test_2[b] 2- b
PASSED
============ 4 passed in 0.38s ===================
从运行结果可以看出,一个yaml 文件中有多个用例时,config 中参数化作用域是模块级别,执行用例顺序是:test_1[a]-test_2[a]-test_1[b]-test_2[b]
用例级别参数化
对单个用例参数化示例test_b.yml
config:
name: demo
test_1:
name: 用例1
fixtures: user
parameters: [a, b]
print: "1-${user}"
test_2:
name: 用例2
print: "2- ${user}"
执行用例
pytest test_b.yml -v -s
运行结果
collected 3 items
a1/test_a1.yml::test_1[a] 1-a
PASSED
a1/test_a1.yml::test_1[b] 1-b
PASSED
a1/test_a1.yml::test_2 2- b
PASSED
=================== 3 passed in 0.35s ===================
config 和 用例同时参数化
config:
name: demo
fixtures: user
parameters: [a, b]
test_1:
name: 用例1
fixtures: name
parameters: [c, d]
print: "1-${user}-${name}"
test_2:
name: 用例2
print: "2- ${user}"
执行结果
collected 6 items
a1/test_a1.yml::test_1[a-c] 1-a-c
PASSED
a1/test_a1.yml::test_2[a] 2- a
PASSED
a1/test_a1.yml::test_1[a-d] 1-a-d
PASSED
a1/test_a1.yml::test_2[b] 2- b
PASSED
a1/test_a1.yml::test_1[b-c] 1-b-c
PASSED
a1/test_a1.yml::test_1[b-d] 1-b-d
PASSED
========6 passed in 0.37s ==========
网易云完整视频课程https://study.163.com/course/courseMain.htm?courseId=1213419817&share=2&shareId=480000002230338
报名咨询wx:283340479 (已报名的同学学习过程中有问题,都可以协助解决)