Time will tell.
fixture 是 pytest 的核心功能,也是亮点功能。
fixture 的目的是提供一个固定基线,在该基线上测试可以可靠地和重复地执行。fixture 提供了区别于传统单元测试有显著改进:
-
有独立的命名,并通过声明它们从测试函数、模块、类或整个项目中的使用来激活。
-
按模块化的方式实现,每个
fixture
都可以互相调用。 -
fixture
的范围从简单的单元扩展到复杂的功能测试,允许根据配置和组件选项对fixture
和测试用例进行参数化,或者跨函数 function 、类 class 、模块 module 或整个测试会话 sessio范围。
1、fixture作为参数传入
定义 fixture 跟定义普通函数差不多,唯一区别就是在函数上加个装饰器@pytest.fixture()
, fixture 命名不要用test
开头,跟用例区分开。用例才是test
开头的命名。
fixture 是可以有返回值的,如果没return
默认返回None
。用例调用fixture
的返回值,直接就是把fixture
的函数名称当成变量名称,如下:
# test_fixture1.py
import pytest
@pytest.fixture()
def user():
print("获取用户名")
a = "yoyo"
return a
def test_1(user):
assert user == "yoyo"
if __name__