で問題が発生しました@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
は、すでに「True」値に変更されていますが、「False」値を取ります。それは非常に奇妙であり、私はこのメカニズムがどのように機能するかを理解していないことを認めます。このデコレータで使用されている値は、テスト中に変更できないようです。たぶん、特定の条件のときにテストをスキップする他の興味深い方法があります。これは、テスト中に変更される可能性があります。誰かがこの問題に取り組む方法を知っていますか?