簡體   English   中英

Python unittest:我們可以重復單元測試用例執行可配置的次數嗎?

[英]Python unittest: Can we repeat Unit test case execution for a configurable number of times?

我們可以重復執行單元測試用例可配置的次數嗎?

例如,我有一個名為Test_MyHardware的單元測試腳本,其中包含幾個測試用例test_customHardware1test_customHardware2

有沒有辦法使用 Python 的 unittest 模塊重復執行test_customHardware1 200 次和test_customHardware2 500 次?

注意:上述案例是簡化的。 實際上,我們將有 1000 個測試用例。

雖然unittest模塊沒有選項,但有幾種方法可以實現此目的:

  • 您可以(ab)使用timeit模塊重復調用測試方法。 請記住:測試方法就像普通方法一樣,您可以自己調用它們。 沒有特殊的魔法要求。
  • 您可以使用裝飾器來實現此目的:

     #!/usr/bin/env python import unittest def repeat(times): def repeatHelper(f): def callHelper(*args): for i in range(0, times): f(*args) return callHelper return repeatHelper class SomeTests(unittest.TestCase): @repeat(10) def test_me(self): print "You will see me 10 times" if __name__ == '__main__': unittest.main() 

更好的選擇是使用exit=False多次調用unittest.main() 此示例將重復次數作為參數並調用unittest.main該次數:

parser = argparse.ArgumentParser()
parser.add_argument("-r", "--repeat", dest="repeat", help="repeat tests")
(args, unitargs) = parser.parse_known_args()
unitargs.insert(0, "placeholder") # unittest ignores first arg
# add more arguments to unitargs here
repeat = vars(args)["repeat"]
if repeat == None:
    repeat = 1
else:
    repeat = int(repeat)
for iteration in range(repeat):
    wasSuccessful = unittest.main(exit=False, argv=unitargs).result.wasSuccessful()
    if not wasSuccessful:
        sys.exit(1)

這允許更大的靈活性,因為它將運行用戶請求指定次數的所有測試。

你需要導入:

import unittest
import argparse

添加這兩行代碼對我有幫助。 除了下面數組中的“test_customHardware1”之外,還可以添加多個測試。

repeat_nos = 10
unittest.TextTestRunner().run(unittest.TestSuite (map (Test_MyHardware, ['test_customHardware1' ]*repeat_nos)))]

暫無
暫無

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

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