pytest之参数化parameterize与数据驱动

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytest之参数化parameterize与数据驱动相关的知识,希望对你有一定的参考价值。

参考技术A 场景:当我们的每一个test_xx开头的函数都根据自己实际传入的数据,和预期设定好的数据,进行一一匹配,判断是否满足条件。
可以通过参数化的形式进行实现。
核心: @pytest.mark.parametrize("变量",所需要取的数据)
举例: @pytest.mark.parametrize("实际变量,预期变量",['实际表达式的值计算',预期结果值])

返回结果:
test_fixture_param_data.py::test_login[3+5-8] PASSED
test_fixture_param_data.py::test_login[1+2-3] PASSED

============================== 2 passed in 0.01s ==============================

场景:当我们需要test_xx函数都需要进行前置条件,比如所有函数都需要先登录,在进行其他操作。然后登录以后输入各自的数据进行搜索。
比如淘宝需要先登录,登录后加入不同的商品,然后去断言加入的商品是否与预期的保持一致,进行断言。
核心:结合fixture和parameterize使用,进行操作。
举例:结合fixture和parameterize使用。
@pytest.fixture(scope="module") 、 @pytest.mark.parametrize("login",user_login_data,indirect=True)

返回结果:test_fixture_param_method.py::test_cart[tom] 需要先登录
用例1,先登录后加入购物车的用户是:tom
test_fixture_param_method.py::test_cart[wendy] 需要先登录
用例1,先登录后加入购物车的用户是:wendy
test_fixture_param_method.py::test_cart[xiaoming] 需要先登录
用例1,先登录后加入购物车的用户是:xiaoming

场景:当我们需要test_xx函数都要进行前置条件和其他数据的加入,这个时候就涉及到多个参数的加入和数据的使用。
核心:结合fixture和parameterize使用,进行操作。

返回结果:
test_fixture_param_method.py::test_cart[login0-search0] 搜索的词11
True
'q': '中国平安', 'count': '11', 'page': '1'
test_fixture_param_method.py::test_cart[login0-search1] 搜索的词22
True
'q': '阿里巴巴', 'count': '22', 'page': '2'
test_fixture_param_method.py::test_cart[login1-search1] True
'q': '阿里巴巴', 'count': '22', 'page': '2'
test_fixture_param_method.py::test_cart[login1-search0] 搜索的词11
True
'q': '中国平安', 'count': '11', 'page': '1'
test_fixture_param_method.py::test_cart[login1-search2] 搜索的词33
True
'q': 'pdd', 'count': '33', 'page': '3'
test_fixture_param_method.py::test_cart[login0-search2] True
'q': 'pdd', 'count': '33', 'page': '3'
test_fixture_param_method.py::test_cart[login2-search2] False
'q': 'pdd', 'count': '33', 'page': '3'
test_fixture_param_method.py::test_cart[login2-search1] 搜索的词22
False
'q': '阿里巴巴', 'count': '22', 'page': '2'
test_fixture_param_method.py::test_cart[login2-search0] 搜索的词11
False
'q': '中国平安', 'count': '11', 'page': '1'

以上是关于pytest之参数化parameterize与数据驱动的主要内容,如果未能解决你的问题,请参考以下文章

python-pytest学习-参数化

Pytest进阶之参数化

Pytest之参数化

unittest的参数化(parameterized模块)

pytest接口自动化测试框架 | fixture之params参数化

pytest--fixture之参数化