我有一个如下所示的模块 A:
import unittest2
def check_function():
# performs actions and returns True or False
return smth
CHECK = check_function()
class A(unittest2.TestCase):
@unittest2.skipIf(CHECK, "skip message 1")
def test_1(self):
# test check
@unittest2.skipIf(CHECK, "skip message 2")
def test_2(self):
# test check
模块 A 正在由另一个模块 B 导入。全局变量 CHECK 何时初始化?进口时?在类实例化?
每次调用 A 类时,我都需要设置 CHECK 变量。我怎样才能做到这一点?
编辑:我已经尝试了以下(这可能是我正在寻找的),但是在 setUpClass 中根本没有设置 CHECK(它保持 False,无论 check_function() 返回什么)。
import unittest2
def check_function():
# performs actions and returns True or False
return smth
CHECK = False
class A(unittest2.TestCase):
global CHECK
@classmethod
def setUpClass(cls):
CHECK = check_function()
@unittest2.skipIf(CHECK, "skip message 1")
def test_1(self):
# test check
@unittest2.skipIf(CHECK, "skip message 2")
def test_2(self):
# test check
每次调用测试时如何设置一次 CHECK 的任何想法?
编辑: check_function() 肯定被调用一次,但我不明白为什么 unittest2.skipIf 没有“看到” setUpClass 中设置的值,而是坚持声明时设置的 False 值?
解决方案:
代码的最终骨架如下所示:
import unittest2
def check_function():
# performs checks and returns True or False
return smth
class A(unittest2.TestCase):
CHECK = check_function()
@unittest2.skipIf(CHECK, "skip message 1")
def test_1(self):
# do tests
self.assertTrue(True)
@unittest2.skipIf(CHECK, "skip message 1")
def test_2(self):
# do tests
self.assertTrue(True)