我刚刚遇到了一个问题@unittest.skipIf(expression)
。好吧,问题是如果我在装饰器中使用变量,在开始测试之前声明并分配一个值,并且在测试期间这个变量的值被改变,效果就是装饰器包含旧值。例如:
class Settings(object):
flag=False
class TestCase(object):
# during the test variable is changed (in this module or another)
Settings.flag=True
@unittest.skipIf(Settings.flag==True)
def test_something(self):
...
的值Settings.flag
可以在另一个模块或此模块中更改(这无关紧要)。在这两种情况下Setting.flag==True
,呼叫期间的条件test_something
仍然采用“假”值,尽管它已经更改为“真”值。这很奇怪,我承认我不明白这种机制是如何工作的。似乎在测试期间无法更改此装饰器中使用的值。也许还有其他一些有趣的方法可以在特定条件下跳过测试,这可能会在测试期间发生变化。有谁知道如何解决这个问题?