我正在編寫unittest.TestCase的一個子類來抽象我們的代碼的一些細節,並且我想使用我自己的斷言函數,但是我需要這個斷言結果將被報告到測試結果。我想重新使用單元測試斷言功能是這樣的:Python單元測試:如何重用TestCase.assert函數
class MyTestCase(unittest.TestCase):
def assertState(state, value):
if state_dict[state] == value:
self.assertTrue(True)
else:
self.assertTrue(False)
的問題是,asserrState在我MyTestCase的情況下,呼叫將代替報告報告錯誤的測試結果對象的assertError。
請建議我如何在unittest.TestCase的子類中編寫自己的斷言函數。
編輯: 我想完成的是提供我們自己的MyTestCase類作爲基類,其中包含更多的具有業務邏輯的斷言功能。這樣,真正的測試可以繼承MyTestCase並在不重複相同代碼的情況下使用這些斷言。這意味着我希望能夠在MyTestCase的子類中調用MyTestCase.assertState,並將測試失敗報告給具體的測試結果。像下面這樣。
class ConcreteTestCase(MyTestCase):
def test_1(self):
#do something here
self.assertState("state", "on")
請讓我知道是否有辦法做到這一點。
在源文件中的單元測試一看,它可能有一些暗示。 – 2011-05-08 07:56:34
我想我沒有說清楚我的問題。我想要做的是基本上使用裝飾模式,MyTestCase將派生自unittest.TestCase類,但提供更多斷言功能,如assertState。具體的測試將是一個具體的測試用例,它將繼承MyTestCase。這將允許我們添加更多的斷言方法,包括我們自己的業務邏輯。 – ycseattle 2011-05-08 16:36:44