Python 修改在使用ddt时测试报告默认显示用例名称与预期不符

 正常在不使用ddt时,在方法下添加注释,即可作为用例描述("""用例描述""")

@BeautifulReport.add_test_img("test_add_story")
def test_add_story(self):
    """用例描述"""
    pass

但是在使用了ddt进行驱动时,上面的方法就已经失效了

@ddt
class TestAddStory(TestInit, PageAddStory, PageStory):

    testdata = read_excel()
    @data(*testdata)
    @BeautifulReport.add_test_img("test_add_story")
    def test_add_story(self, data):
        """提需求"""
        pass

测试报告上显示的用例描述如截图

 

而我在数据准备时,以case_name作为用例描述

在此基础上,为了显示预期的用例描述,需要修改ddt源码

# ddt.py

def ddt(cls):
    for name, func in list(cls.__dict__.items()):
        if hasattr(func, DATA_ATTR):
            for i, v in enumerate(getattr(func, DATA_ATTR)):
                test_name = mk_test_name(name, getattr(v, "__name__", v), i)
                # test_docstring = getattr(v, "__doc__", None)
                test_docstring = ''
                if type(v) is dict:
                    try:
                        test_docstring = v["case_name"]  # case_name
                    except:
                        test_docstring = getattr(v, "__doc__", None)
                if hasattr(func, UNPACK_ATTR):
                    if isinstance(v, tuple) or isinstance(v, list):
                        add_test(cls, test_name, test_docstring, func, *v)
                    else:
                        add_test(cls, test_name, test_docstring, func, **v)
                else:
                    add_test(cls, test_name, test_docstring, func, v)
            delattr(cls, name)
        elif hasattr(func, FILE_ATTR):
            file_attr = getattr(func, FILE_ATTR)
            process_file_data(cls, name, func, file_attr)
            delattr(cls, name)
    return cls

修改完成后,测试报告显示正常 

 

posted on 2019-01-09 15:05  rechin  阅读(1250)  评论(0编辑  收藏  举报

导航