Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在pytest中,支持一个测试的多个布尔组合的最佳方式是什么?_Python_Python 3.x_Api_Testing_Pytest - Fatal编程技术网

Python 在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中使用参数化来实现这一点

例如,我的代码可能如下所示:

@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 ==================================================