pytest是成熟灵活的Python测试框架,相比unittest更简洁,支持自动发现用例、断言重写、fixture依赖管理、参数化测试及丰富插件生态。

pytest是什么,为什么选它做自动化测试
pytest是一个成熟、功能丰富的Python测试框架,相比unittest更简洁灵活。它自带断言重写、自动发现测试用例、丰富的插件生态(如pytest-html生成报告、pytest-xdist支持并行执行),写测试不用写繁琐的类和setup/teardown方法,函数级测试即可开跑。
快速上手:写第一个pytest测试
安装只需一条命令:red">pip install pytest。新建一个test_example.py文件,内容如下:
def test_add():
assert 2 + 3 == 5
def test_str_upper():
assert "hello".upper() == "HELLO"
终端运行pytest,它会自动找到所有以test_开头的函数并执行。加上-v参数可显示详细结果,加-s可输出print内容。
立即学习“Python免费学习笔记(深入)”;
用fixture管理测试依赖和资源
fixture是pytest的核心机制,用来准备、复用和清理测试环境。比如数据库连接、临时文件、模拟对象等,都可通过@pytest.fixture定义:
@pytest.fixture
def sample_data():
return [1, 2, 3]
def test_sum(sample_data):
assert sum(sample_data) == 6
fixture默认作用域是函数级,也可设为scope="class"或scope="session"。带yield的fixture可自动执行清理逻辑。
参数化测试与跳过/标记用例
用@pytest.mark.parametrize可以对同一逻辑批量验证多组输入:
@pytest.mark.parametrize("x,y,expected", [(2, 3, 5), (0, 0, 0), (-1, 1, 0)])
def test_add_param(x, y, expected):
assert x + y == expected
跳过某条测试用@pytest.mark.skip,按条件跳过用@pytest.mark.skipif(如sys.version_info )。用@pytest.mark.smoke等自定义标签后,可运行pytest -m smoke只跑冒烟用例。










