美文网首页Python自动化
Python自动化测试报表生成(1)--测试结果提取

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

作者: Python技术漫谈 | 来源:发表于2016-10-14 11:30 被阅读779次

    文章信息

    技术前提

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

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

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

    主要内容

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

    • errors 错误详细信息列表
    • failures 运行失败详细信息列表
    • skipped 跳过的详细信息列表
    • testsRun 运行的用例总数
    TextTestResult内容

    具体条目

    failures为例子:

    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)--测试结果提取

      本文链接:https://www.haomeiwen.com/subject/kyvgyttx.html