skipIf不会跳过已经满足条件的测试方法

2024-10-03 06:19:56 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的代码,我不确定我是否缺少或遗漏了一些代码,但它并没有跳过test2

import unittest

class AppTesting (unittest.TestCase):
 skipYes = ""

def test_1(self):
    print("Test 1: " + str(AppTesting.skipYes))
    AppTesting.skipYes = "Yes"
    print("Test 1: " + str(AppTesting.skipYes))

@unittest.skipIf(str(skipYes) == "Yes", "Skip condition")
def test_2(self):
    print("Test 2 skipYes is: " + str(AppTesting.skipYes))
    print("This is Test 2")

def test_3(self):
    print("This is Test 3")


if __name__ == "__main__":
    unittest.main()

Tags: 代码testselfismaindefunittestthis
1条回答
网友
1楼 · 发布于 2024-10-03 06:19:56

当模块与测试类定义一起加载到测试运行时,将对decorator进行评估,因此此时的skipYes变量将始终是空字符串"",如类中定义的那样

在测试方法中更改此变量不会有任何区别,因为测试运行程序已经收集了要运行的测试和要跳过的测试

作为一种解决方案,在Python 3.4中,您可以使用子测试:

class MyTestCase(unittest.TestCase):
    def test_some(self):
        skipTest = False

        with self.subTest('subtest1'):
            self.assertTrue(False)

        ...

        if not skipTest:
            with self.subTest('subtest2'):
                self.assertFalse(True)

文档:https://docs.python.org/3/library/unittest.html#distinguishing-test-iterations-using-subtests

相关问题 更多 >