Python 执行select组合并防止pytest运行所有参数组合
有3个用户和5个代码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
@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开头的函数视为测试,您是否有其他配置?