4-2 pytest参数化测试用例

[created_at: 2020-06-11]
引言:一个功能的测试用例,可能有很多不同的参数验证场景,可以直接在脚本中按参数值写各自的测试函数,这样需要写很多,如果通过参数化,就可以只写一段验证脚本即可,也可以脚本与数据分离,使用文件存储参数

pytest中使用参数化

使用pytest装饰器:@pytest.mark.parametrize

  • @pytest.mark.parametrize(argnames,argvalues)
    argnames:要参数化的变量的名称,
    可以是string类型,参数名用逗号分隔
    可以是list类型(列表),元素是string类型
    可以是tuple类型(元组),元素是string类型
    argvalues:对应的参数化的值,是列表类型,列表里面多组参数的可以用列表或元组分组
import pytest
def func(x):
    return x + 1

#一组参数,变量是元组
@pytest.mark.parametrize(('a','b'),[(1,2)])
def test_answer4(a,b):
    assert func(a) == b

#多组参数,变量是string,值是列表,列表里面是元组
@pytest.mark.parametrize('a,b',[(1,2),(2,4)])
def test_answer2(a,b):
    assert func(a) == b

#多组参数,变量是列表
@pytest.mark.parametrize(["a","b"],[(3,2),(3,4)])
def test_answer3(a,b):
    assert func(a) == b

yaml文件存储/读取参数

使用yaml需要安装的库是pyyaml
导入的模块是yaml
yaml文件后缀名是.yml

#yaml文件存储list如下格式
-
  - 1
  - 2
-
  - 2
  - 3
-
  - 6
  - 7
import pytest
import yaml
def func(x):
    return x + 1
#读取yaml文件的参数
@pytest.mark.parametrize(["a","b"],yaml.safe_load(open("./data_b.yml")))
def test_answer(a,b):
    assert func(a) == b

[导航目录]

你可能感兴趣的:(4-2 pytest参数化测试用例)