[英]Unittest setUpClass not working
我正在嘗試開始使用 unittest,但是在讓setUpClass()
工作時遇到問題。 這是我的測試代碼...
import unittest
class TestRepGen(unittest.TestCase):
""" Contains methods for training data testing """
testvar = None
@classmethod
def setUpClass(cls):
cls.testvar = 6
def test_method(self):
""" Ensure data is selected """
self.assertIsNotNone(self.testvar,"self.testvar is None!")
# run tests
if __name__ == '__main__':
unittest.main()
顯示斷言錯誤消息,表明self.testvar == None
,並且沒有被setUpClass()
更改。 我的代碼有問題嗎?
如果我從 IDE (Wing) 或直接從命令行運行代碼,我會得到相同的結果。 作為記錄,我在 Windows7 下使用 Python 3.2.1。
從 2.7 和 3.2 開始,setUpClass 是 unittest 框架的新功能。 如果您想將它與舊版本一起使用,您將需要使用鼻子作為測試運行程序而不是 unittest。
我猜你不會直接調用這個測試 class,而是一個派生的 class。
如果是這種情況,您必須手動調用setUpClass()
- 它不會自動調用。
class TestB(TestRepGen):
@classmethod
def setUpClass(cls):
super(TestB, cls).setUpClass()
此外,測試套件實現了對文檔class-level fixtures are implemented by the test suite
編碼。 因此,如果您以某種未發布的奇怪方式調用TestRepGen
或test_method
, setUpClass
可能無法運行。
好的——是時候承認這是我的錯誤了。 當我應該(並且認為我是)使用 3.2.1 時,我正在使用 3.1.2。 我現在已更改為正確的版本,一切正常,測試通過。 非常感謝所有回復的人(很抱歉浪費您的時間:-()。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.