Appium 在测试用例内使用装饰器后,HTML 报告里没有输出函数注释

洛凉 · 2018年12月27日 · 最后由 洛凉 回复于 2018年12月28日 · 1454 次阅读

装饰器和代码如下,我使用装饰器的主要目的是在 log 里面输出正在执行的用例名和用例注释,但是实现后发现执行完成后 log 里确实记录了装饰器的效果,但是 HTML 报告内却没有了。
有大佬能帮忙决解下吗?找不到思路。
报告地址:https://github.com/huilansame/HTMLTestRunner_PY3

def get_func_name_doc(func):
    '''获取函数名及注释'''
    def run(*argv):
        print(("正在执行:{},测试场景为:{}".format(func.__name__, func.__doc__)))
        if argv:
            ret = func(*argv)
        else:
            ret = func()
        return ret
    return run


import sys
from pathlib import Path

cur_path = Path.cwd()
temp_path = Path.cwd().parent
if str(temp_path) in sys.path:
    print('此目录:{0}已在系统环境变量内,无需再次添加'.format(str(temp_path)))
else:
    sys.path.append(str(temp_path))                     # 加入系统环境变量,以便用例调用项目下模块

from xx.xx.HTMLTestRunner import HTMLTestRunner
from unittest import TestCase,TestSuite

class Test(TestCase):
    '''测试'''
    @get_func_name_doc
    def test_a(self):
        '''测试和'''
        a = 1
        b = 2
        self.assertEqual(a+1,b)

fp = open('test.html','wb')
runner = HTMLTestRunner(stream=fp,
                                           title='测试装饰器',
                                           description='测试装饰器',
                                           verbosity=2,)  # 控制台打印执行结果
all_cases = TestSuite()
all_cases.addTest(Test('test_a'))
runner.run(all_cases)


如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 1 条回复 时间 点赞

已找到决解办法,决解方法为在装饰器函数上使用一个装饰器。代码如下。
参考:[python 基础] python 装饰器 (一) 添加 functools 获取原函数信息以及 functools.partial 分析

from functools import wraps


def get_func_name_doc(func):
    '''获取函数名及注释'''
    @wraps(func)
    def run(*argv):
        logger.info("正在执行:{},测试场景为:{}".format(func.__name__, func.__doc__))
        if argv:
            ret = func(*argv)
        else:
            ret = func()
        return ret

    return run
洛凉 关闭了讨论 12月28日 11:42
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册