目录
Pytest是Python中最流行的自动化测试框架之一,简单易用,而且具有丰富的插件可以不断扩展其功能,同时也提供了丰富的断言功能,使得编写测试用例更灵活。
一般都使用pip来安装:
pip install pytest
创建一个python文件(test_example.py),并编写以下代码:
# test_example.py
def add(a,b): # 定义函数
return a+b
def test_add(): # 编写测试用例
assert add(1,2) == 3 # assert断言
?打开终端,在对应的工作目录下,输入命令:
pytest test_example.py
import pytest
def add(a, b):
return a + b
@pytest.mark.parametrize("a, b, expected", [(1, 2, 3), (0, 0, 0), (-1, 1, 0)])
def test_add(a, b, expected):
result = add(a, b)
assert result == expected
import pytest
@pytest.mark.skip("This function is not completed yet")
def test_uncompleted_function():
pass
@pytest.mark.slow
def test_slow_function():
# 此处放慢测试的代码
pass
首先安装失败重跑插件:pytest-rerunfailures
pip install pytest-rerunfailures
插件参数:
命令行参数:–reruns n(重新运行次数),–reruns-delay m(等待运行秒数)
装饰器参数:reruns=n(重新运行次数),reruns_delay=m(等待运行秒数)
如果想要重新执行所有测试用例,直接输入命令:
pytest --reruns 2 --reruns-delay 10 -s
上述首先设置了重新运行次数为2,并且设置了两次运行之间等待10秒。
如果想重新运行指定的测试用例,可通过装饰器来实现,命令如下:
import pytest
@pytest.mark.flaky(reruns=3, reruns_delay=5)
def test_example():
import random
assert random.choice([True, False, False])
首先创建夹具,代码如下:
@pytest.fixture()
def test_example():
print('case执行之前执行')
yield
print('case执行之后执行')
使用夹具方式1:通过参数引用
def test_case(test_example):
print('case运行中')
使用夹具方式2:通过函数引用
@pytest.mark.usefixtures('test_example')
def test_case():
print('case运行中')
夹具共享:conftest.fy文件,可以跨多个文件共享夹具,而且在用例模块中无需导入,pytest会自动发现conftest.py中的夹具。
fixture?优先级:当前所在模块--->?当前所在包的?conftest.py--->上级包的?conftest.py--->最上级的?conftest.py
作用域执行的优先级:session > module > class > function
根据@pytest.fixture()中scope参数不同,作用域区分: