pytest:如何忽略metafunc参数化类中几个测试的值

时间:2015-05-28 10:49:18

标签: python unit-testing pytest

我使用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>

1 个答案:

答案 0 :(得分:0)

通过在conftest.py中添加以下检查来解决此问题;

if 'accid' in metafunc.fixturenames:
    metafunc.parametrize("accid", accid)

因此,这将检查accid是否是测试函数中定义的参数,然后只有参数化测试。

对于我的上一次测试,我删除了accid参数,现在正在使用。