我剛剛遇到@unittest.skipIf(expression)
的問題。那麼,問題是,如果我在開始測試之前聲明並賦值的裝飾器中使用了變量,並且在測試過程中此變量的值被更改,則效果會使裝飾器包含舊值。例如:[@ unittest.skipIf修飾器]條件的過時值
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
值可以在另一個模塊或該模塊被改變(這並不重要)。在這兩種情況下,在調用test_something
期間條件Setting.flag==True
仍然採用「假」值,儘管它已經更改爲「真」值。這很奇怪,我承認我不明白這個機制是如何工作的。看來這個裝飾器中使用的值在測試過程中不能改變。也許還有一些其他有趣的方法可以在特定條件下跳過測試,這在測試過程中可能會發生變化。有沒有人有一個想法如何解決這個問題?
讓我得到這個直。如果'flag'爲true,您想要跳過測試。這是真的,所以你跳過測試。後來,你改變了'旗' - 你想回到過去,神奇地「迴避」它嗎? – katrielalex
編號默認值爲FALSE,在測試期間值變爲TRUE時,但skipIf將該值仍讀取爲FALSE。 'test_something'調用之前,值正在改變。 –