Pytest 系列(29)- 详解 allure.dynamic 动态生成功能

简介: Pytest 系列(29)- 详解 allure.dynamic 动态生成功能

如果你还想从头学起Pytest,可以看看这个系列的文章哦!

https://www.cnblogs.com/poloyy/category/1690628.html

 

前言


  • @allure.title@allure.description 都是装饰器,给测试用例提供标题和描述
  • 其实 allure 还提供了在测试用例执行过程中动态指定标题和描述等标签的方法
  • 如: allure.dynamic.description  allure.dynamic.title

 

allure.dynamic 的源代码


class Dynamic(object):
    @staticmethod
    def title(test_title):
        plugin_manager.hook.add_title(test_title=test_title)
    @staticmethod
    def description(test_description):
        plugin_manager.hook.add_description(test_description=test_description)
    @staticmethod
    def description_html(test_description_html):
        plugin_manager.hook.add_description_html(test_description_html=test_description_html)
    @staticmethod
    def label(label_type, *labels):
        plugin_manager.hook.add_label(label_type=label_type, labels=labels)
    @staticmethod
    def severity(severity_level):
        Dynamic.label(LabelType.SEVERITY, severity_level)
    @staticmethod
    def feature(*features):
        Dynamic.label(LabelType.FEATURE, *features)
    @staticmethod
    def story(*stories):
        Dynamic.label(LabelType.STORY, *stories)
    @staticmethod
    def tag(*tags):
        Dynamic.label(LabelType.TAG, *tags)
    @staticmethod
    def link(url, link_type=LinkType.LINK, name=None):
        plugin_manager.hook.add_link(url=url, link_type=link_type, name=name)
    @staticmethod
    def issue(url, name=None):
        Dynamic.link(url, link_type=LinkType.ISSUE, name=name)
    @staticmethod
    def testcase(url, name=None):
        Dynamic.link(url, link_type=LinkType.TEST_CASE, name=name)


重点

上面有的方法都能进行动态修改,如:

allure.dynamic.feature
allure.dynamic.link
allure.dynamic.issue
allure.dynamic.testcase
allure.dynamic.story
allure.dynamic.title
allure.dynamic.description


title 的栗子


测试代码

@allure.title("装饰器标题")
def test_1():
    print(123)
    allure.dynamic.title("动态标题")


image.png


description 的栗子


测试代码

def test_1():
    """
    动态设置描述
    """
    print(123)
    allure.dynamic.description("动态描述")
    allure.dynamic.title("动态标题")


image.png


可以看到动态描述会覆盖动态设置描述

 

结合 parametrize


测试代码

data = [
    ("name1", "123456", "name1 登录成功"),
    ("name2", "123456", "name2 登录失败"),
    ("name3", "123456", "name3 登录成功")
]
@pytest.mark.parametrize('username,pwd,title', data)
def test_2(username, pwd, title):
    """
    登录测试用例1
    """
    print(username, pwd)
    allure.dynamic.title(title)


image.png


其他属性的栗子


测试代码

def test_2():
    allure.dynamic.feature('动态feature')
    allure.dynamic.story('动态story')
    allure.dynamic.link("https://www.cnblogs.com/poloyy/p/1.html", '动态Link')
    allure.dynamic.issue("https://www.cnblogs.com/poloyy/p/2.html", '动态Issue')
    allure.dynamic.testcase("https://www.cnblogs.com/poloyy/p/3.html", '动态testcase')


image.png

相关文章
|
6月前
pytest添加自定义参数
pytest添加自定义参数
185 0
|
测试技术
pytest学习和使用25-当看到allure的动态生成标题和描述的特性时,直言简直太灵活了(allure.dynamic使用)
pytest学习和使用25-当看到allure的动态生成标题和描述的特性时,直言简直太灵活了(allure.dynamic使用)
132 0
pytest学习和使用25-当看到allure的动态生成标题和描述的特性时,直言简直太灵活了(allure.dynamic使用)
|
测试技术
pytest学习和使用22-allure特性 丨总览中的Environment、Categories设置以及Flaky test使用
pytest学习和使用22-allure特性 丨总览中的Environment、Categories设置以及Flaky test使用
146 0
|
测试技术 C++ Python
pytest 执行规则_基本用法_常用插件_常用断言_常用参数
pytest 执行规则_基本用法_常用插件_常用断言_常用参数
|
测试技术 C++
Pytest框架运行常用参数解析
Pytest框架运行常用参数解析:-s:表示输出调试信息;-v:打印详细信息;-n:支持多线程或者分布式运行测试用例;–reruns NUM:失败用例重跑;-x:表示只要有一个测试用例报错则执行停止;–maxfail=2:表示出现2个用例报错则执行停止;-k:模糊匹配测试用例的部分字符串。。。
190 0
Pytest框架运行常用参数解析
|
测试技术
pytest学习和使用11-Pytest如何使用自定义标记mark?
pytest学习和使用11-Pytest如何使用自定义标记mark?
94 0
pytest学习和使用11-Pytest如何使用自定义标记mark?
【pytest官方文档】解读- 如何自定义mark标记,并将测试用例的数据传递给fixture函数
【pytest官方文档】解读- 如何自定义mark标记,并将测试用例的数据传递给fixture函数
【pytest官方文档】解读- 如何自定义mark标记,并将测试用例的数据传递给fixture函数
【pytest官方文档】解读fixtures - 2. fixtures的调用方式
【pytest官方文档】解读fixtures - 2. fixtures的调用方式
|
测试技术
Pytest 系列(28)- 参数化 parametrize + @allure.title() 动态生成标题
Pytest 系列(28)- 参数化 parametrize + @allure.title() 动态生成标题
212 0
Pytest 系列(28)- 参数化 parametrize + @allure.title() 动态生成标题
|
测试技术
Pytest系列(19)- 我们需要掌握的allure特性
Pytest系列(19)- 我们需要掌握的allure特性
181 0
Pytest系列(19)- 我们需要掌握的allure特性