我使用pytest在python中编写了一个测试。 其中有conftest.py用于设置,它为每个测试参数化5个帐户ID。 测试类共有5个测试,其中4个需要使用metafunc参数化测试(我在conftest.py中完成),剩下的1个测试不需要参数化。请告诉我们如何一次性运行所有这些测试,避免上一次测试的参数化(test5)。
我的conftest.py有以下内容;
def pytest_generate_tests(metafunc):
accid = ['string1','string2','string3','string4','string5']
metafunc.parametrize("accid", accid)
我的测试文件名为test_accid.py;具有以下内容;
class TestAccount:
def test_base1(self, accid):
<test code>
def test_base2(self, accid):
<test code>
def test_base3(self, accid):
<test code>
def test_base4(self, accid):
<test code>
#The following test should not have accid
def test_no_accid(self):
<test code>
答案 0 :(得分:0)
通过在conftest.py中添加以下检查来解决此问题;
if 'accid' in metafunc.fixturenames:
metafunc.parametrize("accid", accid)
因此,这将检查accid是否是测试函数中定义的参数,然后只有参数化测试。
对于我的上一次测试,我删除了accid参数,现在正在使用。