python测试用例管理模块_Python的单元测试模块如何检测测试用例?
所以我環顧四周在我的Python27 / Lib目錄…
unittest.main實際上是一個類的別名,unittest.TestProgram。那么,你會怎么樣構造一個這樣的一個實例,它的__init__運行,它執行一系列的完整性檢查和配置,包括你調用它的模塊的動態導入(它使用__import__函數,以__main__作為名稱的模塊導入,默認情況下)。所以現在它有一個self.module屬性,它包含一個代表你的源代碼的模塊對象。
最后,它得到這段代碼:
self.test = self.testLoader.loadTestsFromModule(self.module)
其中self.testLoader是unittest.TestLoader的一個實例。該方法包含以下內容:
for name in dir(module):
obj = getattr(module, name)
if isinstance(obj, type) and issubclass(obj, case.TestCase):
tests.append(self.loadTestsFromTestCase(obj))
因此,它使用您的模塊對象的目錄來獲取您定義的所有全局變量(包括類)的名稱,將其過濾到僅來自unittest.TestCase的類(本地,case.TestCase是其中的別名)然后在這些類中查找添加到測試列表中的測試方法。該搜索的行為類似:
def isTestMethod(attrname, testCaseClass=testCaseClass,
prefix=self.testMethodPrefix):
return attrname.startswith(prefix) and \
hasattr(getattr(testCaseClass, attrname), '__call__')
testFnNames = filter(isTestMethod, dir(testCaseClass))
所以它使用類的目錄來獲取要嘗試的名稱列表,使用這些名稱查找屬性,并選擇以self.testMethodPrefix(默認為’test’)開頭的屬性,并且可調用(反過來) ,__call__屬性)。 (我實際上很驚訝,他們在這里不使用內置的可調用函數,我想這是為了避免挑選嵌套類。)
總結
以上是生活随笔為你收集整理的python测试用例管理模块_Python的单元测试模块如何检测测试用例?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php使mysql显示错误_如何针对依赖
- 下一篇: java初学课程_作为java新手应该学