以下是 4 个简单但典型的 pytest 案例,覆盖常用场景:
案例1:基本断言(测试一个简单的加法函数)
python
# test_basic.py
def add(a, b):
return a + b
def test_add():
assert add(2, 3) == 5
assert add(-1, 1) == 0
assert add(0, 0) == 0
案例2:参数化测试(一组输入输出)
python
# test_parametrize.py
import pytest
def is_even(n):
return n % 2 == 0
@pytest.mark.parametrize("num, expected", [
(2, True),
(3, False),
(0, True),
(-4, True),
])
def test_is_even(num, expected):
assert is_even(num) == expected
案例3:异常测试(断言抛出特定异常)
python
# test_exception.py
import pytest
def divide(a, b):
if b == 0:
raise ValueError("除数不能为0")
return a / b
def test_divide_by_zero():
with pytest.raises(ValueError, match="除数不能为0"):
divide(10, 0)
案例4:使用 fixture(临时文件与清理)
python
# test_fixture.py
import pytest
import tempfile
import os
@pytest.fixture
def temp_file():
"""创建一个临时文件,测试结束后自动删除"""
f = tempfile.NamedTemporaryFile(delete=False)
f.write(b"hello pytest")
f.close()
yield f.name # 提供文件路径给测试函数
os.unlink(f.name) # 清理
def test_file_content(temp_file):
with open(temp_file, 'rb') as f:
content = f.read()
assert content == b"hello pytest"
运行方式 :保存为 .py 文件,在终端执行 pytest 文件名.py -v 即可看到结果。