pytest框架
单元测试框架
测试用例的skip,xfail,自动失败重试
支持第三方插件,alluer测试报告,xdist多cpu分发
Jenkins集成
测试用例的识别与运行
测试文件:test_.py ,test.py
用例识别:
类 Test 没有含有init函数,认为有特殊功能的类
方法 test*
不在class类中的,test_*
pytest也可以执行unittest框架写的用例方法
pytest 解释器
python解释器,需要添加入口函数 main
"""
@Time :2021/11/1 12:42
@Author :Wesley
@File :test_a.PY
"""
import pytest
def inc(x):
return x + 1
def test_answer():
assert inc(4) == 5
# 参数化
@pytest.mark.parametrize('a, b', [
(1, 2),
(10, 20),
('a', 'a1'),
(3, 4),
(5, 6)
])
def test_answer1(a, b):
assert inc(a) == b
@pytest.fixture()
def login():
username = 'wesley'
return username
class TestDemo:
# 调用fixture的方法
def test_a(self, login):
print(f'a username = {login}')
def test_b(self):
print('b')
# 没有test,不执行
def c(self):
print('c')
def test_c(self):
print('c')
# 使用python解释器进行执行
if __name__ == '__main__':
pytest.main(['test_a.py::TestDemo', '-v'])
pytest - k test_b - v
# collected 4 items / 3 deselected / 1 selected
pytest - k 'test_a or test_b' - v