目录
1.fixture调用其它fixture
1.1介绍
官方话术:pytest 的最大优势之一是其极其灵活的夹具系统。它允许我们将复杂的测试需求归结为更简单和有组织的功能,我们只需要让每个功能描述它们所依赖的东西。
自我理解: 就是在一个fixture函数调用另一个fixture函数,为了尽可能的让一个fixture函数只修改一个状态(或者说是简化fixture函数的功能),这样可以让每个独立开的fixture函数达到可重用性。
1.2代码示例
文件名:test_demo.py
import pytest
@pytest.fixture
def login():
return 'token'
# 这里在执行setup时,就会先去执行login函数,这里就是fixture函数调用另一个fixture函数
@pytest.fixture
def setup(login):
return 'my:' + login
def test_demo(setup):
assert setup == 'my:token'
运行结果:
结果分析:
1.3小结
2.fixture可重复使用
2.1介绍
官方话术:使 pytest 的夹具系统如此强大的一件事是,它使我们能够定义一个可以反复重用的通用设置步骤,就像使用普通函数一样。两个不同的测试可以请求相同的夹具,并让 pytest 为每个测试提供来自该夹具的自己的结果。这对于确保测试不会相互影响非常有用。我们可以使用这个系统来确保每个测试都获得自己的新一批数据,并从干净的状态开始,这样它就可以提供一致的、可重复的结果。
**自我理解:**同一个fixture可以被多个测试用例使用,这样就可以保证我们在每个执行测试用例时都是新的数据,并且从干净的状态开始。比如登陆操作,或者初始化driver开始。
2.2代码示例
文件名:test_demo.py
import pytest
@pytest.fixture
def login():
return 'token'
def test_demo1(login):
assert login == 'my:token'
# 两个测试用例都调用了login,第一个用例会失败,第二个用例会成功
def test_demo2(login):
assert login == "token"
运行结果:
结果分析: