Python 在pytest中,支持一个测试的多个布尔组合的最佳方式是什么?
基本上,我要做的是,生成三个布尔标志的所有可能组合,然后在这些组合的基础上进行一些操作。有没有一种方法,我可以在pytest中使用参数化来实现这一点 例如,我的代码可能如下所示:Python 在pytest中,支持一个测试的多个布尔组合的最佳方式是什么?,python,python-3.x,api,testing,pytest,Python,Python 3.x,Api,Testing,Pytest,基本上,我要做的是,生成三个布尔标志的所有可能组合,然后在这些组合的基础上进行一些操作。有没有一种方法,我可以在pytest中使用参数化来实现这一点 例如,我的代码可能如下所示: @pytest.mark.parametrize("is_flag_1,is_flag_2,is_flag_3", [(True, False), (True, False), (True, False)]) def test_something(self, is_flag_1, is_flag_2
@pytest.mark.parametrize("is_flag_1,is_flag_2,is_flag_3", [(True, False), (True, False), (True, False)])
def test_something(self, is_flag_1, is_flag_2, is_flag_3):
print(is_flag_1, is_flag_2, is_flag_3)
然后可以生成8种可能的组合,如:
因此,我不想编写8个不同的测试用例,而是希望通过一个测试来实现这一点,利用pytest。如果有参数化以外的其他方法,即使这样也可以。是的,您可以单独对标志进行参数化:
导入pytest
@pytest.mark.parametize(“is_flag_1”,[True,False])
@pytest.mark.parametize(“is_flag_2”,[True,False])
@pytest.mark.parametize(“is_flag_3”,[True,False])
def test_某物(is_标志_1、is_标志_2、is_标志_3):
打印(is_标志_1、is_标志_2、is_标志_3)
python-m pytest-vv
的结果如下:
================================================= test session starts =================================================
...
collected 8 items
parametrize_bool.py::test_something[True-True-True] PASSED [ 12%]
parametrize_bool.py::test_something[True-True-False] PASSED [ 25%]
parametrize_bool.py::test_something[True-False-True] PASSED [ 37%]
parametrize_bool.py::test_something[True-False-False] PASSED [ 50%]
parametrize_bool.py::test_something[False-True-True] PASSED [ 62%]
parametrize_bool.py::test_something[False-True-False] PASSED [ 75%]
parametrize_bool.py::test_something[False-False-True] PASSED [ 87%]
parametrize_bool.py::test_something[False-False-False] PASSED [100%]
================================================== 8 passed in 0.35s ==================================================
是的,您可以单独参数化标志:
导入pytest
@pytest.mark.parametize(“is_flag_1”,[True,False])
@pytest.mark.parametize(“is_flag_2”,[True,False])
@pytest.mark.parametize(“is_flag_3”,[True,False])
def test_某物(is_标志_1、is_标志_2、is_标志_3):
打印(is_标志_1、is_标志_2、is_标志_3)
python-m pytest-vv
的结果如下:
================================================= test session starts =================================================
...
collected 8 items
parametrize_bool.py::test_something[True-True-True] PASSED [ 12%]
parametrize_bool.py::test_something[True-True-False] PASSED [ 25%]
parametrize_bool.py::test_something[True-False-True] PASSED [ 37%]
parametrize_bool.py::test_something[True-False-False] PASSED [ 50%]
parametrize_bool.py::test_something[False-True-True] PASSED [ 62%]
parametrize_bool.py::test_something[False-True-False] PASSED [ 75%]
parametrize_bool.py::test_something[False-False-True] PASSED [ 87%]
parametrize_bool.py::test_something[False-False-False] PASSED [100%]
================================================== 8 passed in 0.35s ==================================================