unittest中使用ddt后生成的测试报告名称如何修改?(如test_api_0修改成test_api_0_titile)

修改前:

Unittest使用ddt后生成的测试报告用例名称为:
在这里插入图片描述
即就是,以“test_xx_数字”为格式的用例名称,感觉满足不了我们的测试需求,不够直观。那么怎么修改呢?

查看ddt源码

def mk_test_name(name, value, index=0):
    """
    Generate a new name for a test case.

    It will take the original test name and append an ordinal index and a
    string representation of the value, and convert the result into a valid
    python identifier by replacing extraneous characters with ``_``.

    We avoid doing str(value) if dealing with non-trivial values.
    The problem is possible different names with different runs, e.g.
    different order of dictionary keys (see PYTHONHASHSEED) or dealing
    with mock objects.
    Trivial scalar values are passed as is.

    A "trivial" value is a plain scalar, or a tuple or list consisting
    only of trivial values.
    """

    # Add zeros before index to keep order
    
    index = "{0:0{1}}".format(index + 1, index_len, )
    if not is_trivial(value):
        return "{0}_{1}".format(name, index)
    try:
        value = str(value)
    except UnicodeEncodeError:
        # fallback for python2
        value = value.encode('ascii', 'backslashreplace')
    test_name = "{0}_{1}_{2}".format(name, index, value)
    return re.sub(r'\W|^(?=\d)', '_', test_name)
    
  • 从方法mk_test_name中,我们看到该方法的描述是“Generate a new name for a test case.”,即就是为测试用例创建一个名称,那么改这个方法就行了
  • 方法中返回的是name和index,即"{0}_{1}".format(name, index)
  • 那么就明白了,我们改返回的内容就行了

修改后

def mk_test_name(name, value, index=0):
    """
    Generate a new name for a test case.

    It will take the original test name and append an ordinal index and a
    string representation of the value, and convert the result into a valid
    python identifier by replacing extraneous characters with ``_``.

    We avoid doing str(value) if dealing with non-trivial values.
    The problem is possible different names with different runs, e.g.
    different order of dictionary keys (see PYTHONHASHSEED) or dealing
    with mock objects.
    Trivial scalar values are passed as is.

    A "trivial" value is a plain scalar, or a tuple or list consisting
    only of trivial values.
    """

    # Add zeros before index to keep order

    index = "{0:0{1}}".format(index + 1, index_len, )
    if not is_trivial(value) and type(value) is not dict: # 增加的地方,增加value的字典判断

        return "{0}_{1}_{2}".format(name, index, value.name) # 修改的地方,增加返回的值
    if type(value) is dict: # 增加的地方
        try: # 增加的地方
            value = value["name"] + "_" + value["function"] # 增加的地方,name和function必须是execl用例中整正存在的表头,这里我是把两个表头合并了(name是我表格中接口的名称,function是表格中接口的功能描述)
        except: # 增加的地方
            return "{0}_{1}".format(name.index) # 增加的地方
    try:
        value = str(value)
    except UnicodeEncodeError:
        # fallback for python2
        value = value.encode('ascii', 'backslashreplace')
    test_name = "{0}_{1}_{2}".format(name, index, value)  # 修改的地方
    return re.sub(r'\W|^(?=\d)', '_', test_name)

在这里插入图片描述
在这里插入图片描述

1 声望
0 粉丝
0 条评论
推荐阅读
WindowsGUI自动化测试框架搭建之需求整理、详细设计和框架设计
1 需求整理1.1 实现目的基于CS架构,模拟用户(鼠标、键盘)操作,达到快速、重复执行测试用例;便于回归测试,快速覆盖主线用例或功能;线上或线下巡检测试,结合持续集成,及时发现运行环境存在的问题;提升个...

虫无涯阅读 397

测试开发专题-目录
专题开篇1. 测试开发简介网络篇1. OSI七层协议2. 常用服务协议3. IP地址4. 网络路由5. 常用命令6. 问题定位系统篇1. 常用系统命令2. 安装KVM虚拟机3. 按需创建KVM测试虚拟机4. Docker容器安装5. 使用Docker测试常...

陈琦1阅读 2.2k

封面图
月光宝盒(vivo流量录制回放平台)正式对外开源
月光宝盒是一个基于流量录制回放的自动化测试平台,通过录制回放取代编写脚本进行自动化回归,提升测试效率和覆盖率。因为其解决方案具有很强的通用性,所以我们把这它开源出来,希望能帮助到有需要的用户。

vivo互联网技术阅读 1.8k

前端高质量交付产品利器之自动化测试
对客户交付高质量的产品是企业的核心目标之一,而单元测试是实现这一目标的重要手段之一。通过单元测试,可以确保产品的每个部分都经过了严格的测试,降低产品出现缺陷的概率,提高产品的可靠性和稳定性。同时,...

Aaron1阅读 597

cookie 时效无限延长方案
自动化测试有2种形式,接口自动化和UI自动化。而UI自动化经常会被登录节点堵塞,例如验证码、图形、滑块等,尽管有些方式可以识别图形和定位滑块位置,但成功率都不高,无法真正意义上实现自动化执行;而http接口...

京东云开发者1阅读 464

封面图
Django笔记三十六之单元测试汇总介绍
在我们创建的每一个 application 下面都有一个 tests.py 文件,我们通过继承 django.test.TestCase 编写我们的单元测试。

Hunter阅读 895

封面图
开源好物推荐:全栈测试平台RunnerGo
做软件测试的同学在工作时应该都碰到过这种情况:接口管理、接口测试用postman、Apipost等接口管理工具,性能测试用jmeter、loadrunner等性能测试工具,接口自动化则是jmeter脚本或者python脚本配合jenkins使用。...

大雨治水阅读 872

1 声望
0 粉丝
宣传栏