如何使它在Python中的單元測試(使用unittest
)按它們在文件中指定的順序運行?在Python中更改單元測試的順序
回答
您可以通過設置自定義比較功能來更改默認排序行爲。在unittest.py中,您可以找到默認情況下設置爲內置函數cmp
的類變量unittest.TestLoader.sortTestMethodsUsing
。
例如,你可以這樣做回覆您的測試的執行順序:
import unittest
unittest.TestLoader.sortTestMethodsUsing = lambda _, x, y: cmp(y, x)
聰明的命名。
class Test01_Run_Me_First(unittest.TestCase):
def test010_do_this(self):
assertTrue(True)
def test020_do_that(self):
etc.
是強制特定訂單的一種方法。
也有測試運行者自己做 - 我認爲py.test做到了。
使用proboscis庫作爲我mentioned already(請參閱下面簡短描述那裏)。
試過長鼻涕......值得一提的是,它劫持了測試加載過程,所以如果你使用鼻子,任何利用該鼻子插件(例如testid)將停止工作 – Clintm 2015-04-01 22:01:21
如上所述,通常測試用例中的測試應該以任何(即隨機)順序進行測試。但是,如果您確實想要在測試用例中排列測試,顯然這不是微不足道的。 使用dir(MyTest)
從測試用例中檢索測試(方法名稱),該測試用例返回成員的排序列表。您可以使用巧妙的(?)hack來按行號排序方法。這將爲一個測試用例工作:
if __name__ == "__main__":
loader = unittest.TestLoader()
ln = lambda f: getattr(MyTestCase, f).im_func.func_code.co_firstlineno
lncmp = lambda a, b: cmp(ln(a), ln(b))
loader.sortTestMethodsUsing = lncmp
unittest.main(testLoader=loader, verbosity=2)
我發現使用PyTest排序它插件提供的here的解決方案。
在CLI中嘗試py.test YourModuleName.py -vv
,測試將按照它們出現在模塊中的順序運行。
我做了同樣的事情,併爲我工作得很好。
注意:您需要安裝PyTest軟件包並導入它。
- 1. python單元測試中setUp/tearDown的順序是什麼?
- 2. Enum的單元測試順序
- 3. Python中的單元測試
- 4. 更改元素的順序
- 5. Python - 單元測試
- 6. Python單元測試
- 7. UICollectionView reloadData更改單元格順序
- 8. 單元測試/ Python中
- 9. 單元測試在Python
- 10. 單元測試在Python
- 11. Python的CLI程序單元測試
- 12. 在單元測試中調用單獨的Python程序
- 13. 在單元測試中驗證函數調用順序
- 14. 的Python - 單元測試類
- 15. Python的單元測試ModuleImportFailure
- 16. 如何在Python單元測試中運行單個測試
- 17. 單元測試保存更改失敗
- 18. 更改python中字符串的順序
- 19. 在Maven中避免單元測試在未更改模塊中
- 20. 在Django/Python中編寫單元測試
- 21. Python:在單元測試中處理sys.exit?
- 22. 在python中有單元測試問題
- 23. 在python中參數化單元測試
- 24. 集合中的元組唯一元素在Python中更改順序
- 25. 如何在angular2單元測試中更改選擇框的值?
- 26. UIAutomation中的測試順序
- 27. 在Python單元測試框架中修改全局變量
- 28. Python中的單元測試套件
- 29. Python中的單元測試接口
- 30. 單元測試GAE中的webapp.RequestHandler - Python
它還排除了在多核上並行運行測試,或者跨羣集分佈測試。不是一個好主意。 – 2010-10-24 03:50:02
這將是重要的,如果1.您需要調試,並希望運行測試按順序增加複雜性和2.如果一小部分的測試計算量很大,但有一些錯誤可以通過簡單的測試發現,那麼讓他們下令會讓你的工作更快,更快。 – 2012-10-22 11:31:40
聽起來像集成測試,而不是單元測試。 – 2013-03-01 20:04:32