簡體   English   中英

單元測試 setUpClass 不起作用

[英]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編碼。 因此,如果您以某種未發布的奇怪方式調用TestRepGentest_methodsetUpClass可能無法運行。

好的——是時候承認這是我的錯誤了。 當我應該(並且認為我是)使用 3.2.1 時,我正在使用 3.1.2。 我現在已更改為正確的版本,一切正常,測試通過。 非常感謝所有回復的人(很抱歉浪費您的時間:-()。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM