前言

  由于allure描述装饰器过于臃肿,不方便看起来不美观。所以决定将其封装成一个装饰器。

可以通过一个装饰器来封装 Allure 的装饰器,然后通过一个函数来实现一行代码注入需要的内容。例如:

import allure
import functools
 
def allure_decorator(title=None, description=None, severity=None, feature=None, story=None, issue=None, testcase=None, link=None, link_name=None):
    def decorator(func):
        @allure.title(title)
        @allure.description(description)
        @allure.severity(severity)
        @allure.feature(feature)
        @allure.story(story)
        @allure.issue(issue)
        @allure.testcase(testcase)
        @allure.link(link, name=link_name)
        @functools.wraps(func)
        def wrapper(*args, **kwargs):
            result = func(*args, **kwargs)
            return result
        return wrapper
    return decorator
 

       这里我们定义了一个 allure_decorator 装饰器,它接受多个参数,包括测试用例的标题、描述、功能模块、用户故事、关联缺陷和链接。这些参数可以为空,表示不需要注入对应的内容。

然后我们定义了一个内部装饰器 decorator,它接受一个测试用例函数作为参数,并根据传入的参数,使用 Allure 的装饰器来注入对应的内容。

最后,我们可以通过一个函数来使用这个装饰器,例如:

@allure_decorator(title="测试用例1", description="这是一个测试用例", feature="登录功能", story="用户登录", issue="BUG-001")
def test_login():
    # 测试用例代码
    pass