测试函数可以通过将fixture对象命名为输入参数来接受。对于每个参数名称,具有该名称的fixture函数将提供fixture对象。fixture函数通过使用@ pytest.fixture标记来注册。下面看一个简单的自包含测试模块,其中包含一个fixture和一个使用它的测试功能:
fixture作为函数参数
该示例将“f()”函数标记为@pytest.fixture,在测试函数test_a()中的输入参数填写为“f”,那么运行时,会进行相应调用:
运行结果
在失败的跟踪日志中,测试函数是通过参数“f”调用,且在运营该用例时,“f”就会被执行。测试函数在最后assser处失败。这是通过pytest使用调用测试函数的协议:
1、pytest根据test前缀来找到测试用例“test_a”,测试函数需要一个名为“f”的函数参数。通过查找名为“f”的带有fixture标记的函数,来匹配fixture函数。
2、“f”被调用用来创建一个实例。
3、test_a(<f instance>)被调用,并在测试函数的最后一行失败。
注意: 如果拼错一个函数的参数或者想使用一个不可用的函数参数,那么你可以看到一个错误,并且列出来可用的函数参数。
可以使用
pytest --fixtures test_a.py
来查看可用的fixtures。
如果要查看“_”开头的fixtures,那么需要添加“-v”选项
pytest --fixtures test_a.py
pytest --fixtures -v test_a.py
明天再继续~