• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

pytest-allure.title定制用例标题

武飞扬头像
qq_37556007
帮助1

在做自动化时,为了提高报告的可读性,一般希望在 allure 报告上能详细的展示出每个用例的标题,这样能更直观的知道每个用例是干什么的。

下面介绍三种不同方式的标题的

  1. 通过参数化parametrize中ids添加用例标题
  2. 通过allure.title添加用例
  3. 通过allure.dynamic.title参数化动态展示标题

1.通过参数化parametrize中ids添加用例标题,示例代码如下

  1.  
    import pytest
  2.  
    import allure
  3.  
     
  4.  
     
  5.  
    def login(username, password):
  6.  
    """登录"""
  7.  
    print(f"用户 {username} 的密码是 {password}")
  8.  
     
  9.  
     
  10.  
    # 测试数据
  11.  
    test_datas = [
  12.  
    ("user1", "123456"),
  13.  
    ("user2", "123456"),
  14.  
    ("user3", "123456")
  15.  
    ]
  16.  
    ids = ["user1输入正确账号,密码,登录成功", "user2输入错误账号,密码,登录失败", "user3输入正确账号,错误密码,登录失败"]
  17.  
     
  18.  
     
  19.  
    @pytest.mark.parametrize("username, password", test_datas, ids=ids)
  20.  
    def test_login(username, password):
  21.  
    """测试登录用例"""
  22.  
     
  23.  
    login(username, password)
学新通

生成的报告用例标题如下:

学新通

2.通过allure.title()添加用例

下面的示例中,同时加了ids 和allure.title()

当没有加allure.title()时候,用例的描述就是 item.name 值(也就是上面的 ids 用例的名称),
如果加了allure.title(),那么用例的描述就是添加的title值,这两个地方取其中的一个。

  1.  
    import os
  2.  
    import pytest
  3.  
    import allure
  4.  
     
  5.  
     
  6.  
    def login(username, password):
  7.  
    """登录"""
  8.  
    print(f"用户 {username} 的密码是 {password}")
  9.  
     
  10.  
     
  11.  
    # 测试数据
  12.  
    test_data = [
  13.  
    ("user1", "123456", "登录成功"),
  14.  
    ("user2", "123456", "登录失败"),
  15.  
    ("user3", "123456", "登录成功")
  16.  
    ]
  17.  
    ids = ["user1输入正确账号,密码,登录成功", "user2输入错误账号,密码,登录失败", "user3输入正确账号,错误密码,登录失败"]
  18.  
     
  19.  
     
  20.  
    @allure.story("登录")
  21.  
    @allure.title("用例标题--{title}") # title为parametrize中的参数
  22.  
    @pytest.mark.parametrize("username, password, title", test_data, ids=ids)
  23.  
    def test_login(username, password, title):
  24.  
    """测试登录用例"""
  25.  
     
  26.  
    login(username, password)
学新通

生成报告如下:

学新通

 3.通过allure.dynamic.title参数化动态展示标题

结合@pytest.mark.parametrize使用,通过占位符传递关键字参数

--个人比较喜欢的一种方式,更加灵活

  1.  
    import pytest
  2.  
    import allure
  3.  
     
  4.  
     
  5.  
    def login(username, password):
  6.  
    """登录"""
  7.  
    print(f"用户 {username} 的密码是 {password}")
  8.  
     
  9.  
     
  10.  
    # 测试数据
  11.  
    test_data = [
  12.  
    {"username": "user1", "password": "123456", "title": "user1登录成功"},
  13.  
    {"username": "user2", "password": "123456", "title": "user3登录失败"},
  14.  
    {"username": "user3", "password": "123456", "title": "user2登录成功"}
  15.  
    ]
  16.  
     
  17.  
     
  18.  
    @allure.story("登录")
  19.  
    # @allure.title("{test_input['title']}") # 这种方式是错误的,不支持的,具体可以查看源码
  20.  
    @pytest.mark.parametrize("test_input", test_data)
  21.  
    def test_login(test_input):
  22.  
    """测试登录用例"""
  23.  
    allure.dynamic.title(test_input['title'])
  24.  
    login(test_input['username'], test_input['password'])
学新通

生成的报告如下:

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfjbbbf
系列文章
更多 icon
同类精品
更多 icon
继续加载