簡體   English   中英

重載unittest.testcase的__init__

[英]overloading __init__ of unittest.testcase

我想在我的子類中添加兩個變量,這些變量繼承自unittest.testcase

像我一樣:

import unittest

class mrp_repair_test_case(unittest.TestCase):

     def __init__(self, a=None, b=None, methodName=['runTest']):
             unittest.TestCase.__init__(self)
             self.a= a
              self.b = b

     def test1(self):
           ..........
           .......

def runtest()
    mrp_repair_test_case(a=10,b=20)
    suite = unittest.TestLoader().loadTestsFromTestCase(mrp_repair_test_case)
    res = unittest.TextTestRunner(stream=out,verbosity=2).run(suite)

我怎么能得到這個:我收到這個錯誤:

ValueError: no such test method in ****<class 'mrp_repair.unit_test.test.mrp_repair_test_case'>:**** runTest

謝謝

乍一看,您似乎需要創建一個mrp_repair_test_case實例。 您當前的行:

mrp_repair_test_case(a=10,b=20)

實際上並沒有做任何事情。

嘗試(未測試):

def runtest():
    m = mrp_repair_test_case(a=10, b=20)
    suite = unittest.TestLoader().loadsTestsFromTestCase(m)
    res = unittest.TextTestRunner(stream=out, verbosity=2).run(suite)

這假設您已經將'out'設置為流。

編輯:

那么,有沒有理由你沒有使用setUp方法來設置這些值? 這將是正常的最佳做法。 看一下loadTestsFromTestCase的文檔,看起來它只接受Class本身而不是它的一個實例,這意味着你正在反對unittest模塊的設計。

編輯2:

為了回應您的進一步信息,我實際上會在調用測試之前將您的uid和游標值分別設置在模塊級別。 我通常不是全球人的忠實粉絲,但如果我正確地理解你,那么這些價值將是A)只讀B)對於同一個客戶總是相同的,這避免了使用它們時的大多數正常陷阱。

編輯3:

要回答你的編輯,如果你真的想使用__init__你可能會,但你必須推出自己的loadsTestsFromTestCase替代品,可能還有你自己的TestSuite(你必須檢查它的工作原理)。 正如我上面所說,你將會反對模塊的現有設計 - 如果你決定以這種方式進行測試,那么從頭開始推出自己的解決方案可能比使用unittest更容易。 修改 :剛剛檢查過,你肯定要推出自己的TestSuite版本,因為現有版本為每個測試創建一個TestCaseClass的新實例。

暫無
暫無

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

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