pytest 实现参数化功能

本文的前提是你已经了解了 pytest 的 ‘fixture’ ,不熟悉的朋友可以移步 > 传送门
pytest 提供了强大的 fixture 功能,当 fixture 的 params 参数为 list 时,会执行 ‘list参数长度’ 次测试

import pytest


is_a = [1, 2, 3, 4, 5, 6, 11, 12]


@pytest.fixture(params=is_a)
def is_a(request):
    print(request)
    return request.param


def test_a(is_a):
    assert is_a < 10

执行结果为:

(venv) admindeMBP:My_Function_Test admin$ pytest
========================================================================================================================== test session starts ==========================================================================================================================
platform darwin -- Python 3.7.2, pytest-4.4.1, py-1.8.0, pluggy-0.9.0
rootdir: /Users/admin/PycharmProjects/My_Function_Test
collected 8 items                                                                                                                                                                                                                                                       

tests/test_aa.py ......FF                                                                                                                                                                                                                                         [100%]

=============================================================================================================================== FAILURES ================================================================================================================================
______________________________________________________________________________________________________________________________ test_a[11] _______________________________________________________________________________________________________________________________

is_a = 11

    def test_a(is_a):
>       assert is_a < 10
E       assert 11 < 10

tests/test_aa.py:14: AssertionError
------------------------------------------------------------------------------------------------------------------------- Captured stdout setup -------------------------------------------------------------------------------------------------------------------------
<SubRequest 'is_a' for <Function test_a[11]>>
______________________________________________________________________________________________________________________________ test_a[12] _______________________________________________________________________________________________________________________________

is_a = 12

    def test_a(is_a):
>       assert is_a < 10
E       assert 12 < 10

tests/test_aa.py:14: AssertionError
------------------------------------------------------------------------------------------------------------------------- Captured stdout setup -------------------------------------------------------------------------------------------------------------------------
<SubRequest 'is_a' for <Function test_a[12]>>
================================================================================================================== 2 failed, 6 passed in 0.24 seconds ===================================================================================================================

我们传入的 list 长度为 8
通过结果......FF 可以看到:
共执行了 8 次,因 11、12 大于 10 ,所以成功为 6 次,失败为 2 次

你可能感兴趣的:(python)