ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-09-27 11:02:37  阅读:199  来源: 互联网

标签:description title dynamic 29 allure test def


本文转自:https://www.cnblogs.com/poloyy/p/13894043.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("动态标题")

 

allure 报告

 

description 的栗子

测试代码

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

 

allure 报告

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

 

结合 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)
 

 

allure 报告

 

其他属性的栗子

测试代码

 
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')
 

 

allure 报告

 

标签:description,title,dynamic,29,allure,test,def
来源: https://www.cnblogs.com/jokeryy/p/15341961.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有