[英]Python unittest: Can we repeat Unit test case execution for a configurable number of times?
我們可以重復執行單元測試用例可配置的次數嗎?
例如,我有一個名為Test_MyHardware
的單元測試腳本,其中包含幾個測試用例test_customHardware1
和test_customHardware2
。
有沒有辦法使用 Python 的 unittest 模塊重復執行test_customHardware1
200 次和test_customHardware2
500 次?
注意:上述案例是簡化的。 實際上,我們將有 1000 個測試用例。
雖然unittest模塊沒有選項,但有幾種方法可以實現此目的:
您可以使用裝飾器來實現此目的:
#!/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.