pytest详解-(6)函数参数化

在测试用例方法前加测试数据:
@pytest.mark.parametrize("参数名",列表数据)
参数名:用来接收每一项数据,并作为测试用例的参数。
列表数据:一组测试数据。

语法:

* 传入单个参数
@pytest.mark.parametrize('参数名',lists)
* 传入两个参数
@pytest.mark.parametrize('参数1','参数2',[(
              参数1_data[0],参数2_data[0]),(
              参数1_data[1],参数2_data[1])]
传三个或者更多也是这样传。list的每个元素都是一个元祖,元祖里的每个元素和按参数顺序一一对应。
*    demo
# @pytest.mark.parametrize("a,b,c", [(1, 2, 0.5), (1, 1, 1)])    # 参数a,b,c均被赋予两个值,函数会运行两遍
@pytest.mark.parametrize("a,b,c", return_data())                 # 使用函数返回值的形式传入参数值
@pytest.mark.div
def test_division_seven(self, a, b, c):
    result = self.calc.division(a, b)
    assert c == result

多次使用parametrize

场景:用户登录,需要输入不同的用户名、密码多种组合

@pytest.mark.parametrize("name", [1,2])
@pytest.mark.parametrize("password", [8,10,11])
def test_login(name,password):
    print(f"测试数据组合name:{name},password:{password}")  

将case放在yaml文件内进行参数化

yaml文件:
- [1,2,0.5]
- [1,2,0.5]
单独写一个方法去读yaml文件然后return,参数化时,使用函数返回值得形式传入参数
def return_date():
    with open(r'case_date.yml') as f:
        f = yaml.safe_load(f)
    return f

 

posted @ 2020-07-08 23:00  jaxon-chen  阅读(215)  评论(0)    收藏  举报