
''' 時間:2018/10/30 功能:斷言與報告 目錄: 一: 測試報告 1 工程結構 2 TestCase 3 TestReport 4 common 5 run_all
(1) unittest生成
(2) HTMLTestRunner生成 二: 斷言使用 '''
一: 測試報告
1 工程結構

1 : 一級目錄 - 工程名稱
2 : 二級目錄 - 測試用例
3 : 二級目錄 - 測試報告
4 : 二級文件 - 運行文件
2 TestCase

1 : 編寫了兩個測試case
# coding:utf-8 import unittest class IntegerArithmeticTestCase(unittest.TestCase): ''' 測試符號計算 ''' def testMultiply(self): ''' 乘法計算''' self.assertEqual((0 * 10), 0) self.assertEqual((5 * 8), 40) def testAsd(self): ''' 加法計算''' self.assertEqual((1 + 1), 2) self.assertEqual((1 + 1), 2) if __name__ == '__main__': unittest.main()
1 : test_count.py
# coding:utf-8 import requests import unittest class TestQQ(unittest.TestCase): ''' 測試QQ接口''' def test_qq_right_key(self): ''' key值 - 正確情況''' url = "http://japi.juhe.cn/qqevaluate/qq" par = { "key": "980bf619855953f6ebef9abe90d52712", "qq": "1812436356" } r = requests.get(url, params=par) res = r.json() self.assertTrue(res['reason'] == 'success') # 檢查點 - 結果 self.assertTrue(res['error_code'] == 0) # 檢查點 - 錯誤碼 self.assertTrue(res['result'] != []) # 檢查點 - 返回結果 def test_qq_error_key(self): ''' key值 - 錯誤情況 ''' url = "http://japi.juhe.cn/qqevaluate/qq" par = { "key": "123456789", "qq": "1812436356" } r = requests.get(url, params=par) res = r.json() self.assertTrue(res['reason'] == 'KEY ERROR!') # 檢查點 - 結果 self.assertTrue(res['error_code'] == 10001) # 檢查點 - 錯誤碼 self.assertTrue(res['result'] == []) # 檢查點 - 返回結果 def test_qq_no_qq(self): ''' qq - 為空 ''' url = "http://japi.juhe.cn/qqevaluate/qq" par = { "key": "980bf619855953f6ebef9abe90d52712", "qq": "" } r = requests.get(url, params=par) res = r.json() self.assertTrue(res['reason'] == '錯誤的請求參數') # 檢查點 - 結果 self.assertTrue(res['error_code'] == 216602) # 檢查點 - 錯誤碼 if __name__ == "__main__": unittest.main()
1 : test_qq_api.py
3 TestReport

1 : 等run_all.py執行完畢,會生成一個report.html文件。

1 : 全部測試通過的報告。

1 : 全部測試失敗的報告,可以看到失敗原因。
4 common

1 : 使用第三方 HTMLTestRunner_cn.py,方便查看測試結果。
5 run_all
(1) unittest生成
# coding:utf-8 import unittest import os # 路徑兼容 - windows/mac cur_path = os.path.dirname(os.path.realpath(__file__)) # 獲取路徑 - 當前腳本 cur_path = os.path.join(cur_path, "TestCase") # 拼接路徑 # 顯示結果 - unnitest pattern = "test*.py" # 匹配文件 discover = unittest.defaultTestLoader.discover(start_dir = cur_path, pattern = pattern) print(discover) runner = unittest.TextTestRunner() runner.run(discover)
..<unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<test_count.IntegerArithmeticTestCase testMethod=testAsd>, <test_count.IntegerArithmeticTestCase testMethod=testMultiply>]>]>, <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<test_qq_api.TestQQ testMethod=test_qq_error_key>, <test_qq_api.TestQQ testMethod=test_qq_no_qq>, <test_qq_api.TestQQ testMethod=test_qq_right_key>]>]>]> ... ---------------------------------------------------------------------- Ran 5 tests in 0.299s OK
(2) HTMLTestRunner生成
# coding:utf-8 import unittest import os from common import HTMLTestRunner_cn # 路徑兼容 - windows/mac cur_path = os.path.dirname(os.path.realpath(__file__)) # 獲取路徑 - 當前腳本 cur_path = os.path.join(cur_path, "TestCase") # 拼接路徑 # 顯示結果 - unnitest pattern = "test*.py" # 匹配文件 discover = unittest.defaultTestLoader.discover(start_dir = cur_path, pattern = pattern) print(discover) # 路徑兼容 - windows/mac cur_path = os.path.dirname(os.path.realpath(__file__)) # 獲取路徑 - 當前腳本 report_path = os.path.join(cur_path, "TestReport", "report.html") # 顯示結果 - HTMLTestRunner fp = open(report_path, "wb") runner = HTMLTestRunner_cn.HTMLTestRunner(stream = fp, # 報告路徑 title = "接口測試用例報告", # 報告標題 description = "測試用例詳情報告", # 報告描述 retry = 1, # 錯誤重寫執行 verbosity = 2) # 注釋顯示 runner.run(discover)
<unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<test_count.IntegerArithmeticTestCase testMethod=testAsd>, <test_count.IntegerArithmeticTestCase testMethod=testMultiply>]>]>, <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<test_qq_api.TestQQ testMethod=test_qq_error_key>, <test_qq_api.TestQQ testMethod=test_qq_no_qq>, <test_qq_api.TestQQ testMethod=test_qq_right_key>]>]>]>
ok testAsd (test_count.IntegerArithmeticTestCase)
ok testMultiply (test_count.IntegerArithmeticTestCase)
ok test_qq_error_key (test_qq_api.TestQQ)
ok test_qq_no_qq (test_qq_api.TestQQ)
ok test_qq_right_key (test_qq_api.TestQQ)
Time Elapsed: 0:00:00.304017
二: 斷言使用
常用的斷言 assertEqual 數字相同 assertNotEqual 數字不同 assertFalse 條件為假 assertTrue 條件為真 assertIn 字符串 - 包含 assertNotIn 字符串 - 不包含 所有的測試結果判斷,都可以用True和False來判斷。
