pytest + yaml 框架 -46.支持模块级别和用例级别参数化

发布时间 2023-07-04 22:49:28作者: 上海-悠悠

前言

parameters 功能做了优化,支持模块级别和用例级别参数化

  • config 中 parameters 参数化,作用域是整个模块级别
  • 用例中 parameters 参数化,作用域只针对单个用例

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