文章信息
- 作者:Harmo哈莫
- 博客:http://www.cnblogs.com/beer
- 时间:2016-10-13
技术前提
本文提供了一种使用pyunit测试框架进行 判定类的测试
后,如何提取测试结果数据,并呈现出测试报告方法。
在进行本文后续工作之前,请读者保证自己具备如下能力:
- 会Python编程
- 能使用pyunit写
判定类测试
- 了解测试结果相关类和函数
主要内容
TextTestResult
结果中包含的如下内容:
- errors 错误详细信息列表
- failures 运行失败详细信息列表
- skipped 跳过的详细信息列表
- testsRun 运行的用例总数
具体条目
以 failures
为例子:
本测试用例的描述:
编号索引为0
的数据:
- _testMethodName 测试函数名称
- _testMethodDoc 测试函数的文档,这里面一般陈述本测试的功能
打印出来的堆栈错误信息:
- 编号
索引为1
的数据。
提取测试结果代码
通过加入:
- 测试执行时间
- 项目ID
- 项目版本号
def dict_encode_test_results(test_results, **kwargs):
"""
将测试结果进行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
)
# 详细信息部分
failure_list = [] # 失败的内容
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
可以提到一个如下的字典对象:
test_res_dict = {
"pro_version": "1.16.10.10.1",
"was_successful": False,
"skipped": 2,
"errors": 1,
"failures": 1,
"pro_id": "57fa12ec47fc894ee04a2c69", # 在后台管理系统中组织信息详细信息里面可以查看到:项目ID
"total": 5,
"run_time": 51.772,
"details": [
{
"status": "failures",
"note": "AssertionError: 404 != 403 : gt不等于32位,返回404",
"explain": "只是用于测试的Demo,没有太多意义",
"test_case": "test_getfrontlib_gt_not32"
}
]
}
然后调用测试报告系统提供的API文档,即可将判定测试
的结果上传到 测试报告系统服务器
数据库。