Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.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 执行select组合并防止pytest运行所有参数组合_Python_Python 3.x_Parameters_Pytest_Fixtures - Fatal编程技术网

Python 执行select组合并防止pytest运行所有参数组合

Python 执行select组合并防止pytest运行所有参数组合,python,python-3.x,parameters,pytest,fixtures,Python,Python 3.x,Parameters,Pytest,Fixtures,有3个用户和5个代码 @pytest.mark.fns @pytest.mark.parametrize("USER, PWD", [(user1, user1pwd), (user2, user2pwd), (user3, user3pwd)]) @pytest.mark.parametrize("CODE", ['code1', 'code2', 'code3', 'code 4', 'code 5']) def fn1(CODE, USER, PW

有3个用户和5个代码

@pytest.mark.fns
@pytest.mark.parametrize("USER, PWD", [(user1, user1pwd), (user2, user2pwd), (user3, user3pwd)])
@pytest.mark.parametrize("CODE", ['code1', 'code2', 'code3', 'code 4', 'code 5'])

def fn1(CODE, USER, PWD):
    ...
    ...
    do something
    ...
    ...
现在,如果我运行pytest-mfns,函数fn1将在所有代码和用户PWD组合中运行15次。但是,我只希望它运行5次,如下所示:

fn1(code1, user1, user1pwd)
fn1(code2, user2, user2pwd)
fn1(code3, user3, user3pwd)
fn1(code4, user1, user1pwd)
fn1(code5, user2, user2pwd)
也就是说,将代码1、2和3与user1、2和3一起传递,然后将剩余的代码4和5与user1和2一起传递

Edit1:代码的数量可以从1到1000不等,而只有3个用户。并且每个代码只需要用一个用户传递一次

我看了很多赛程,但这对我来说太难理解了。有人能解释一下我是如何做到这一点的吗?

导入itertools def fn1_参数: 对于zip中的代码、用户、pwd [代码1、代码2、代码3、代码4、代码5], itertools.cycle[ user1,user1pwd, user2,user2pwd, user3,user3pwd, ] : 屈服代码,用户,pwd 然后:

def测试_fn1: 对于fn1_参数中的代码、用户、pwd: FN1代码,用户,pwd 或

不确定是否需要列表 @pytest.mark.ParameterizeCode,用户,pwd,列表FN1\u参数 def FN1代码,用户,pwd:
关于ParameterizeCode,USER,PWD,[code1,user1,user1pwd,…]和你对ParameterizeUser,PWD,[…]做的一样吗?这是因为代码的数量可以从1到1000不等,而只有3个用户。使用夹具和参数化很重要,或者在一次测试中多次直接调用fn1很好吗?没关系。我只需要对所有代码运行这个pytest,每个代码只传递一次,同时还有一个用户。非常感谢。你是救世主。尽管如此,收益率还是不受欢迎。我将打开一个空列表并附加到它。谢天谢地,收益率已被弃用?PytestCollectionWarning:在pytest 4.0中删除了收益率测试-fn1_参数将被忽略。fn1_参数不是测试,我们不希望pytest将其视为一个测试。通常pytest只将以test开头的函数视为测试,您是否有其他配置?