[英]Python: Run The Same Unittest module Tests For Multiple Files
我正在嘗試創建一個簡單的框架,該框架將從特定目錄中發現所有測試用例(我在這些情況下使用unittest),並對多個python文件運行這些測試用例,這些文件都將使用相同的代碼實現相同的代碼功能簽名。
Autograder.py
TestCasesFolder/
TestCase1.py
TestCase2.py
...
ImplementationFolder/
Implementation1.py
SecondImplementationFolder/
Implementation2.py
框架成功使用查找所有測試用例(請注意,這是在類中)
self.suites = unittest.defaultTestLoader.discover(self.testDirectory)
從那里,我想在Implementation1和Implementation2上運行這些套件。
我一直在使用內置
self.suites.run(unittest.TestResult)
unittest的方法來運行我的測試,而我解決該問題的第一個嘗試是導入要使用的當前實現進行測試
imp.load_source
然后使用正確的模塊引用更新TestCase1.py的全局名稱空間。 但是,由於每個模塊都有其自己的全局名稱空間,所以我不確定是否可以連接到其他文件名稱空間。 我也不確定這是否正確,或者是否有比我的實現更好的方法。 我應該怎么做呢?
編輯我當前似乎有效的解決方案是使Autograder.py文件通過參考Implementation模塊來更新__builtins__
模塊。 實際行如下所示:
__builtins__.ImplementationModule = imp.load_source("Implementation Module", "Implementation1.py")
這意味着當TestCase1.py通過__builtins__
可以訪問ImplementationModule時。 當然,問題在於這是假定__builtins__
模塊從不實現任何名稱為ImplementationModule的東西,否則我將以未知的含義覆蓋它。 有這樣做的風險較小的版本嗎?
你看過鼻子系統嗎? 聽起來與您的工作非常相似。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.