文章信息
- 作者:Harmo哈莫
- 博客:http://www.cnblogs.com/beer
- 時(shí)間:2016-10-13
技術(shù)前提
本文提供了一種使用pyunit測(cè)試框架進(jìn)行 判定類的測(cè)試
后痘绎,如何提取測(cè)試結(jié)果數(shù)據(jù)孤页,并呈現(xiàn)出測(cè)試報(bào)告方法行施。
在進(jìn)行本文后續(xù)工作之前魂那,請(qǐng)讀者保證自己具備如下能力:
- 會(huì)Python編程
- 能使用pyunit寫
判定類測(cè)試
- 了解測(cè)試結(jié)果相關(guān)類和函數(shù)
主要內(nèi)容
TextTestResult
結(jié)果中包含的如下內(nèi)容:
- errors 錯(cuò)誤詳細(xì)信息列表
- failures 運(yùn)行失敗詳細(xì)信息列表
- skipped 跳過(guò)的詳細(xì)信息列表
- testsRun 運(yùn)行的用例總數(shù)
TextTestResult內(nèi)容
具體條目
以 failures
為例子:
failures
本測(cè)試用例的描述:
編號(hào)索引為0
的數(shù)據(jù):
- _testMethodName 測(cè)試函數(shù)名稱
- _testMethodDoc 測(cè)試函數(shù)的文檔,這里面一般陳述本測(cè)試的功能
打印出來(lái)的堆棧錯(cuò)誤信息:
- 編號(hào)
索引為1
的數(shù)據(jù)精刷。
提取測(cè)試結(jié)果代碼
通過(guò)加入:
- 測(cè)試執(zhí)行時(shí)間
- 項(xiàng)目ID
- 項(xiàng)目版本號(hào)
def dict_encode_test_results(test_results, **kwargs):
"""
將測(cè)試結(jié)果進(jìn)行json編碼
:param test_results:
:type test_results: unittest.TestResult
:return:
"""
run_time = kwargs.get('run_time', None)
pro_id = kwargs.get('pro_id', None)
pro_version = kwargs.get('pro_version', None)
# 主體部分
res_dict = dict(
# was_successful=True if test_results.wasSuccessful() else False,
was_successful=test_results.wasSuccessful(),
total=test_results.testsRun,
failures=len(test_results.failures),
errors=len(test_results.errors),
skipped=len(test_results.skipped),
run_time=run_time,
pro_id=pro_id,
pro_version=pro_version
)
# 詳細(xì)信息部分
failure_list = [] # 失敗的內(nèi)容
for x in test_results.failures:
note_data = {
'test_case': x[0]._testMethodName,
'explain': x[0]._testMethodDoc.rstrip('\n :return:'),
'status': 'failures',
'note': x[1]
}
failure_list.append(note_data)
for i in test_results.errors:
note_data = {
'test_case': i[0]._testMethodName,
'explain': i[0]._testMethodDoc.rstrip('\n :return:'),
'status': 'errors',
'note': i[1]
}
failure_list.append(note_data)
res_dict['details'] = failure_list
return res_dict
可以提到一個(gè)如下的字典對(duì)象:
test_res_dict = {
"pro_version": "1.16.10.10.1",
"was_successful": False,
"skipped": 2,
"errors": 1,
"failures": 1,
"pro_id": "57fa12ec47fc894ee04a2c69", # 在后臺(tái)管理系統(tǒng)中組織信息詳細(xì)信息里面可以查看到:項(xiàng)目ID
"total": 5,
"run_time": 51.772,
"details": [
{
"status": "failures",
"note": "AssertionError: 404 != 403 : gt不等于32位,返回404",
"explain": "只是用于測(cè)試的Demo,沒(méi)有太多意義",
"test_case": "test_getfrontlib_gt_not32"
}
]
}
然后調(diào)用測(cè)試報(bào)告系統(tǒng)提供的API文檔挤土,即可將判定測(cè)試
的結(jié)果上傳到 測(cè)試報(bào)告系統(tǒng)服務(wù)器
數(shù)據(jù)庫(kù)误算。