web自动化 -- HTMLreport测试报告自定义测试用例名&描述,重写ddt
一、需求痛点
1、HTMLreport测试报告的用例名不明确
2、希望可以自定义HTMLreport测试报告的用例名
3、痛点截图

二、解决办法
1、原因分析
HTMLreport测试报告中的用例名是经过ddt重写的,所以我们直接重写ddt内的方法
2、重写ddt内的方法:mk_test_name
ddt -- mk_test_name方法在第107行,我们直接把原本的方法注释掉,在其原方法下方插入以下代码
# 重写该方法,自定义用例名
def mk_test_name(name, value, index=0):
"""
name:用例名/实例方法名
value:用例数据字典
"""
# 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)
# 添加对字典数据的处理
# 判断如果不是字典类型,条件就不满足;value不是字典类型则为假,就不会按原来拼接
if not is_trivial(value) and not isinstance(value, dict):
return "{0}_{1}".format(name, index)
# 如果数据是字典,则获取字典当中的title对应的值,加到测试用例名称中
if isinstance(value, dict):
try:
# 取出title值
value = value["case_name"] # 这个“case_name”要和测试数据的字段名一致
except KeyError:
return "{0}_{1}".format(name, index)
try:
value = str(value) # 把title转换为字符串类型
except UnicodeEncodeError:
# fallback for python2
value = value.encode('ascii', 'backslashreplace') # value是title名称
test_name = "{0}_{1}_{2}".format(name, index, value) # 用例名称拼接
return re.sub(r'\W|^(?=\d)', '_', test_name)
3、设计测试数据

三、重写后的效果

参考博客:https://www.cnblogs.com/my_captain/p/9219403.html
报告增加用例描述:重写DDT源码
修改途径:
ddt源码内:
将test_data_docstring = _get_test_data_docstring(func, v)
修改为:
test_data_docstring = v["classname"]
修改之后再运行:


浙公网安备 33010602011771号