首页 > 解决方案 > 在运行时使用@unittest.skipIf 跳过测试取决于变量

问题描述

我想跳过特定的测试取决于类中的变量,如下面的代码。

但它会得到“TypeError:'NoneType'类型的参数不可迭代”。

名称已在其他地方设置。(TestClassA.name = 'xxx')

也许这不是一个好方法,但我不知道如何修改。

请给我一些建议,谢谢。

class TestClassA(unittest.TestCase):
    name = None

    def test_a(self):
        //do something

    @unittest.skipIf('xxx' in name, "reason")
    def test_b(self):
        //do something

标签: pythonseleniumselenium-webdriverpython-unittest

解决方案


好吧,您可以通过

class TestClassA:
    name = ''

但它很可能不会解决根本问题 - >测试的收集发生在它们执行之前,因此在收集测试之后设置类变量不会导致测试被跳过......

也许您可以name从某个配置文件中导入模块的范围,而不是在类上设置它?

例如

from someconfig.module import NAME

class TestClassA:

    def test_a(self):
        //do something

    @unittest.skipIf('xxx' in NAME, "reason")
    def test_b(self):
        //do something

推荐阅读