微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pytest 系列28- 参数化 parametrize + @allure.title() 动态生成标题

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

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

 

前言

  • 参数化 @pytest.mark.parametrize 的学习:https://www.cnblogs.com/poloyy/p/12675457.html
  • 认 allure 报告上的测试用例标题不设置就是用例名称,这样可读性不高
  • 结合 @pytest.mark.parametrize 参数化完成数据驱动时,如果标题写死,这样可读性也不高
  • 所以我们希望标题可以动态的生成,来看看如何做吧

 

参数化无标题的栗子

测试代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
__title__  = 
__Time__   = 2020/10/28 15:08
__Author__ = 小菠萝测试笔记
__Blog__   = https://www.cnblogs.com/poloyy/
"""
import allure
 pytest


@pytest.fixture()
def login(request):
    登录"""
    param = request.param
    print(f"账号是:{param['username']},密码是:{param['pwd']}")
     返回
    return {code": 0,msg": success!}

datas = [
    {usernamename1",1)">pwdpwd1},{name2pwd2name3pwd3}
]

@allure.story('登录功能')
@pytest.mark.parametrize(login',datas,indirect=True)
 test_login1(login):
    
    登录测试用例1
    """
    assert login['] == 0

 

allure 报告

 

标题就是方法名+参数化的数据,看着可读性就不咋滴

 

参数化有标题写死的栗子

测试代码

将上面的测试代码添加一个 @allure.title 就可以了

@allure.story()
@allure.title(登录测试用例2 test_login2(login):
    
    登录测试用例2
    '] == 0

 

allure 报告

因为参数化可以生成三条用例,所以三条用例都用了同一个 title,可读性也不咋滴

 

参数化使用 ids 的栗子

测试代码

}
]

ids = [
    username is name1,pwd is pwd1,username is name2,pwd is pwd2username is name3,pwd is pwd3
]

@allure.story('] == 0

 

allure 报告

 

参数化动态生成标题的栗子

测试代码

}


datas =}
]

data2 = [
    (123456),()
]


@allure.story(分别传值登录测试用例2-账号是:{username}-密码是:{pwd}username,pwd test_login1(username,pwd):
    print(username,pwd)


@allure.story(字典参数化登录测试用例2-{dict}dict test_login2(dict):
    print(dict['],dict[])


@allure.story(传值进fixture登录测试用例2{login} test_login3(login):
    '] == 0

 

allure 报告

传入的如果是一个字典则显示完整字典值

 

参数化动态生成标题最优方案的栗子

测试代码

 pytest

data =name1 登录成功name2 登录失败name3 登录成功登录测试用例-{title}print(username,pwd)

 

allure 报告

 

这种做法的优点

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐