簡體   English   中英

PyUnit中不推薦使用測試套件嗎?

[英]Is test suite deprecated in PyUnit?

按照PyUnit中的示例,我提出了以下運行良好的unittest代碼。

import unittest

class Board:
  def __init__(self, x, y):
    self.x = x; self.y = y;
  def __eq__(self, other):
      return self.x == other.x and self.y == other.y

class BoardTest(unittest.TestCase):
    def setUp(self):
        self.b10_10 = Board(10,10)
        self.b10_10p = Board(10,10)
        self.b10_20 = Board(10,20)
    def tearDown(self):
        pass
    def test1(self):
        self.assert_(self.b10_10 == self.b10_10p)
    def test2(self):
        self.assert_(not (self.b10_10 == self.b10_20))

class BoardTest2(unittest.TestCase):
    def setUp(self):
        self.b10_10 = Board(10,10)
        self.b10_10p = Board(10,10)
        self.b10_20 = Board(10,20)
    def tearDown(self):
        pass
    def test1(self):
        self.assert_(self.b10_10 == self.b10_10p)
    def test2(self):
        self.assert_(not (self.b10_10 == self.b10_20))

def suite():
    suite1 = unittest.makeSuite(BoardTest)
    suite2 = unittest.makeSuite(BoardTest2)
    return unittest.TestSuite((suite1, suite2))

if __name__ == "__main__":
  unittest.main()

但是,即使我刪除了

def suite():
, 結果是一樣的。 換句話說,固定裝置/套件對於PyUnit似乎並非沒有用。

這個對嗎?

如果要在單個模塊中運行所有測試,則不需要unittest.TestSuite,因為unittest.main()將動態檢查從其調用的模塊並查找從unittest.TestCase派生的所有類。

但是,在許多情況下,TestSuite類仍然很方便:

  1. 您要構建一組邏輯測試組。 例如,一組單元測試,集成測試,針對特定子系統的測試等。
  2. 您測試跨多個模塊/程序包。 在這種情況下,使用一個腳本可以運行以執行所有測試非常有用。 這可以通過構建一套包含所有測試的套件來完成。 請注意,這與諸如Discovery之類的庫無關。

除了Mark的答案之外,構建您自己的suite()的另一個原因是您是否在動態構建測試。

另外,我花了一些時間弄清楚如何讓PyDev拿起套件並在圖形測試運行程序中運行它。 訣竅是放入這樣的方法:

def load_tests(loader, tests, pattern):
    return suite()

這種方法被圖形測試運行器接受。

暫無
暫無

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

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