Python unittest.TestLoader()類的幾種尋找testcase的方法的使用
unittest.TestLoader()提供了建立test suite的幾種方法:
TestLoader().loadTestsFromTestCase(testCaseClass)
TestLoader().loadTestsFromModule(module, pattern=None)
TestLoader().loadTestsFromName(name, module=None)
TestLoader().loadTestsFromNames(name, module=None)
TestLoader().discover
下面一一列舉其用法,並會感嘆unittest的精妙之處。
- loadTestsFromTestCase(testCaseClass)
testCaseClass必須是TestCase的子類(或孫類也行) - loadTestsFromModule(module, pattern=None)
test case所在的module - loadTestsFromName(name, module=None)
name是一個string,string需要是是這種格式的“module.class.method” - loadTestsFromNames(name, module=None)
names是一個list,用法與上同 - discover(start_dir, pattern=’test*.py’, top_level_dir=None)
從python檔案中獲取test cases
以上舉例如下:
含有test cases的檔案:for_all.py
class DefaultTestCase(unittest.TestCase):
def setUp(self):
print "Start to run"
def tearDown(self):
print "Close"
class CasesALL(DefaultTestCase):
def ab_test_print_b(self):
print 'b',
print time.time()
time.sleep(2)
用來執行測試用例的檔案:run.py
import unittest
from unittest import TestLoader
import for_all
from for_all import CasesALL
if __name__ == '__main__':
suite = unittest.TestSuite()
loader = TestLoader()
loader.testMethodPrefix = 'ab'
# loader.sortTestMethodsUsing = None
# test_cases_name = loader.getTestCaseNames(CasesALL)
test_cases1 = unittest.TestLoader().loadTestsFromTestCase(CasesALL)
test_cases2 = unittest.TestLoader().loadTestsFromModule(for_all)
test_cases3 = unittest.TestLoader().loadTestsFromName('for_all.CasesALL.ab_test_print_b')
suite.addTests(test_cases1)
suite.addTests(test_cases2)
suite.addTests(test_cases3)
runner = unittest.TextTestRunner(verbosity=2)
runner.run(suite)
除錯時發現,其實三種方法得到的test suite的格式都不一樣,但是runner.run()執行的結果是一樣的,這也是我覺得驚喜的原因。
unittest.TextTestRunner(verbosity=2).run(tests)
這裡的verbosity是一個選項,表示測試結果的資訊複雜度,有三個值
0 (靜默模式): 你只能獲得總的測試用例數和總的結果 比如 總共100個 失敗20 成功80
1 (預設模式): 非常類似靜默模式 只是在每個成功的用例前面有個“.” 每個失敗的用例前面有個 “F”
2 (詳細模式):測試結果會顯示每個測試用例的所有相關的資訊
並且 你在命令列里加入不同的引數可以起到一樣的效果
加入 --quiet 引數 等效於 verbosity=0
加入--verbose引數等效於 verbosity=2
什麼都不加就是 verbosity=1</pre>
相關文章
- [原創]尋找Asp1.2X的Stolen code的另一種方法
- Swift 幾種動態判斷類的方法Swift
- Python中清空list的幾種方法Python
- 使用ABAP操作Excel的幾種方法Excel
- python之建立類的兩種方法Python
- python儲存檔案的幾種方法Python
- Python教程: 反射及常用的幾種方法Python反射
- Python之協同過濾(尋找相近的使用者)Python
- python讀取大檔案的幾種方法Python
- JavaScript類建立的幾種方式JavaScript
- mysql最佳化通常使用的幾種方法MySql
- xml操作的幾種方法XML
- 跨域的幾種方法跨域
- Vue3實現元件級基類的幾種方法Vue元件
- python2.7連線操作redis的幾種方法PythonRedis
- python的__init__幾種方法總結【轉載】Python
- JavaScript 建立類/物件的幾種方式JavaScript物件
- python中list的各種方法使用Python
- 負載測試如何尋找"拐點"?使用哪種方法進行測試?負載
- WPF中 ContextMenu 尋找父物體的一種方案Context
- Laravel 重定向的幾種方法Laravel
- php呼叫webservice的幾種方法PHPWeb
- 尋找將1~N的整數隨機排列的高效方法隨機
- Python的類方法Python
- 關於python單例的常用幾種實現方法Python單例
- python中函式引數傳遞的幾種方法Python函式
- 尋找全中國使用TensorFlow的開發者和公司
- Laravel 表單驗證器的幾種使用方法Laravel
- LINUX 使用批量刪除檔案的幾種方法Linux
- Billboards 技術在Unity 中的幾種使用方法Unity
- 使用 Java 測試網路連通性的幾種方法Java
- Python中類的建立和使用方法Python
- Mac中eclipse快速尋找類MacEclipse
- 尋找陣列的中心索引陣列索引
- 找尋不用Linux的理由Linux
- python的幾種輸出方式Python
- python的幾種輸入方式Python
- python 非同步的幾種方式Python非同步