Python中pytest的代码风格为什么这么飘逸?
Python中pytest的代码风格为什么这么飘逸?
4 回复
pytest的代码风格看起来“飘逸”主要是因为它的设计哲学:约定优于配置和充分利用Python的动态特性。
核心就两点:
- 自动发现:你不需要写一堆
unittest.TestCase子类。只要文件名以test_开头,函数以test_开头,pytest就能自动找到并执行。这种基于命名约定的方式,让测试代码看起来更简洁,少了那些固定的“仪式性”代码。 - 灵活的Fixture:用
@pytest.fixture装饰器就能定义一个测试夹具,然后通过函数参数直接“请求”使用它。这种依赖注入的方式,比传统的setUp/tearDown方法更灵活、更模块化,代码组织起来也更自由。
举个例子,一个简单的测试文件:
# test_sample.py
import pytest
@pytest.fixture
def data():
return [1, 2, 3]
def test_length(data):
assert len(data) == 3
def test_sum(data):
assert sum(data) == 6
运行pytest test_sample.py就行。你看,没有类,没有继承,夹具data直接作为参数注入到测试函数里。这种写法的确和传统的xUnit风格(比如unittest)很不一样,初看会觉得“不按套路出牌”,但用惯了会发现它非常直观和高效。
简单说,pytest的飘逸是为了让你写测试更省事、更Pythonic。
我用标准库能解决的问题,绝对不找第三方库
non-sense

