Python自动化测试报表生成(1)--测试结果提取

文章信息

  • 作者:Harmo哈莫
  • 博客:http://www.cnblogs.com/beer
  • 时间:2016-10-13

技术前提

本文提供了一种使用pyunit测试框架进行 判定类的测试 后,如何提取测试结果数据,并呈现出测试报告方法。

在进行本文后续工作之前,请读者保证自己具备如下能力:

  1. 会Python编程
  2. 能使用pyunit写 判定类测试
  3. 了解测试结果相关类和函数

主要内容

TextTestResult 结果中包含的如下内容:

  • errors 错误详细信息列表
  • failures 运行失败详细信息列表
  • skipped 跳过的详细信息列表
  • testsRun 运行的用例总数
Python自动化测试报表生成(1)--测试结果提取_第1张图片
TextTestResult内容

具体条目

failures为例子:

Python自动化测试报表生成(1)--测试结果提取_第2张图片
failures

本测试用例的描述:

编号索引为0的数据:

  • _testMethodName 测试函数名称
  • _testMethodDoc 测试函数的文档,这里面一般陈述本测试的功能

打印出来的堆栈错误信息:

  • 编号索引为1的数据。

提取测试结果代码

通过加入:

  1. 测试执行时间
  2. 项目ID
  3. 项目版本号
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文档,即可将判定测试的结果上传到 测试报告系统服务器 数据库。

你可能感兴趣的:(Python自动化测试报表生成(1)--测试结果提取)