前言
一直想学习自动化测试,但是都没行动,业余时间学习零零碎碎并记录20210419。
6、使用pytest重构项目
- pytest框架介绍
- pytest标记
- pytest参数化处理
- pytest Fixtrue
- pytest allure生成测试报告
- 使用pytest重构项目
pytest参数化处理
在pytest中,可以使用参数化测试,即每组参数都独立执行一次测试。这种方式使用的工具是:
- pytest.mark.parametrize(argname,argvalue)
- 数据类型:列表、元祖、字典
实例:
import pytest
#列表
data = ['小慌慌','留白']
@pytest.mark.parametrize('name',data)
def test1(name):
print(name)
# 元祖
data2 = [
(1,2,3), # 或者[1,2,3]
(4,5,6)
]
@pytest.mark.parametrize('pwd',data2)
def test2(pwd):
print(pwd)
data3 = [
(11,22,33), # 或者[1,2,3]
(44,55,66)
]
@pytest.mark.parametrize('a,b,c',data3)
def test3(a,b,c):
print(a,b,c)
# 字典
data4 = (
{
'user': '小慌慌',
'pwd' : 123456
},
{
'user': '留白',
'pwd' : 666
}
)
@pytest.mark.parametrize('dic',data4)
def test4(dic):
print(dic)
运行结果:
ffdeMBP pytest % pytest -s test_05.py
======================================================================================== test session starts ========================================================================================
platform darwin -- Python 3.7.3, pytest-6.2.3, py-1.10.0, pluggy-0.13.1
rootdir: /Users/ff/PycharmProjects_py3/Selenium_project/testcase/pytest, configfile: pytest.ini
collected 8 items
test_05.py 小慌慌
.留白
.(1, 2, 3)
.(4, 5, 6)
.11 22 33
.44 55 66
.{'user': '小慌慌', 'pwd': 123456}
.{'user': '留白', 'pwd': 666}
.
========================================================================================= 8 passed in 0.02s =========================================================================================
ffdeMBP pytest %
还可以通过添加id方式来
代码:
# 添加id id的值可以自定义 只要方便理解每个值是干什么的就行
import pytest
data5=[
pytest.param(1,2,3,id="a+b:pass"),
# pytest.param(4,5,10,id="a+b:fail")
pytest.param(5,5,10,id="a+b:pass")
]
def add(a,b):
return a+b
# 接下来看怎么测试
class TestParametrize(object):
@pytest.mark.parametrize('a,b,expect',data5)
def test_paramerrize(self,a,b,expect):
assert add(a,b)==expect
print(a+b)
if __name__ == '__main__':
pytest.main(['-s','test5.py'])
运行结果:
============================= test session starts ==============================
platform darwin -- Python 3.7.3, pytest-6.2.3, py-1.10.0, pluggy-0.13.1
rootdir: /Users/ff/PycharmProjects_py3/Selenium_project/testcase/pytest, configfile: pytest.inicollected 2 items
test5.py .3
.10
[100%]
============================== 2 passed in 0.02s ===============================
Process finished with exit code 0