目录:导读
- 前言
- 一、Python编程入门到精通
- 二、接口自动化项目实战
- 三、Web自动化项目实战
- 四、App自动化项目实战
- 五、一线大厂简历
- 六、测试开发DevOps体系
- 七、常用自动化测试工具
- 八、JMeter性能测试
- 九、总结(尾部小惊喜)
前言
默认 allure 报告上的测试用例标题不设置默认就是用例名称,这样可读性不高;
当结合 @pytest.mark.parametrize 参数化完成数据驱动时,如果标题写死,这样可读性也不高,动态的生成标题才是可读性较高最常用的。
参数化无标题
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import allure
import pytest
@pytest.fixture()
def login(request):
"""登录"""
param = request.param
print(f"账号是:{param['username']},密码是:{param['pwd']}")
# 返回
return {"code": 0, "msg": "success!"}
datas = [
{"username": "name1", "pwd": "pwd1"},
{"username": "name2", "pwd": "pwd2"},
{"username": "name3", "pwd": "pwd3"}
]
@allure.story('登录功能')
@pytest.mark.parametrize('login', datas, indirect=True)
def test_login1(login):
"""
登录测试用例1
"""
assert login['code'] == 0
标题就是方法名+参数化的数据,看着可读性不太好
参数化有标题写死
测试代码
将上面的测试代码添加一个 @allure.title 就可以了
@allure.story('登录功能')
@allure.title('登录测试用例2')
@pytest.mark.parametrize('login', datas, indirect=True)
def test_login2(login):
"""
登录测试用例2
"""
assert login['code'] == 0
因为参数化可以生成三条用例,所以三条用例都用了同一个 title,可读性也不怎么高
参数化使用 ids
测试代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import allure
import pytest
@pytest.fixture()
def login(request):
"""登录"""
param = request.param
print(f"账号是:{param['username']},密码是:{param['pwd']}")
# 返回
return {"code": 0, "msg": "success!"}
datas = [
{"username": "name1", "pwd": "pwd1"},
{"username": "name2", "pwd": "pwd2"},
{"username": "name3", "pwd": "pwd3"}
]
ids = [
"username is name1,pwd is pwd1",
"username is name2,pwd is pwd2",
"username is name3,pwd is pwd3"
]
@allure.story('登录功能')
@pytest.mark.parametrize('login', datas, ids=ids, indirect=True)
def test_login1(login):
"""
登录测试用例1
"""
assert login['code'] == 0
参数化动态生成标题
测试代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import allure
import pytest
@pytest.fixture()
def login(request):
"""登录"""
param = request.param
print(f"账号是:{param['username']},密码是:{param['pwd']}")
# 返回
return {"code": 0, "msg": "success!"}
datas = [
{"username": "name1", "pwd": "pwd1"},
{"username": "name2", "pwd": "pwd2"},
{"username": "name3", "pwd": "pwd3"}
]
data2 = [
("name1", "123456"),
("name2", "123456"),
("name3", "123456")
]
@allure.story('分别传值')
@allure.title('登录测试用例2-账号是:{username}-密码是:{pwd}')
@pytest.mark.parametrize('username,pwd', data2)
def test_login1(username, pwd):
"""
登录测试用例1
"""
print(username, pwd)
@allure.story('字典参数化')
@allure.title('登录测试用例2-{dict}')
@pytest.mark.parametrize('dict', datas)
def test_login2(dict):
"""
登录测试用例1
"""
print(dict['username'], dict['pwd'])
@allure.story('传值进fixture')
@allure.title('登录测试用例2{login}')
@pytest.mark.parametrize('login', datas, indirect=True)
def test_login3(login):
"""
登录测试用例2
"""
assert login['code'] == 0
allure 报告
传入的如果是一个字典则显示完整字典值
参数化动态生成标题最优方案
测试代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import allure
import pytest
data = [
("name1", "123456", "name1 登录成功"),
("name2", "123456", "name2 登录失败"),
("name3", "123456", "name3 登录成功")
]
@allure.story('分别传值')
@allure.title('登录测试用例-{title}')
@pytest.mark.parametrize('username,pwd,title', data)
def test_login1(username, pwd, title):
"""
登录测试用例1
"""
print(username, pwd)
优点:
可以自定义各式各样的标题;
单独一个值去维护标题值;
可读性比较好,容易维护;
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
一、Python编程入门到精通
二、接口自动化项目实战
三、Web自动化项目实战
四、App自动化项目实战
五、一线大厂简历
六、测试开发DevOps体系
七、常用自动化测试工具
八、JMeter性能测试
九、总结(尾部小惊喜)
只有坚持不懈的努力,才能创造无限可能,只有拼搏奋斗的人生,才能书写辉煌篇章。相信自己,勇往直前,你一定能够实现心中的梦想,成就非凡的未来!
只有不断努力,才能超越昨天的自己,追寻梦想的辉煌;只有拼搏奋斗,才能在困境中找到突破的机会;只有坚持不懈,才能创造出属于自己的辉煌人生。相信自己,勇往直前!
只有不断超越自己的努力,才能让梦想绽放光彩;只有坚持不懈的奋斗,才能实现最美好的未来。无论困难多大,只要心怀信念,勇往直前,你一定能成就非凡!