测试pytest设备本身的正确方法是什么。请不要将其与在测试中使用夹具混淆。我只想测试一下固定装置的正确性。在
当我试图在测试中调用并执行它们时,我面对的是:
Fixture "app" called directly. Fixtures are not meant to be called directly
如有任何意见,我们将不胜感激。关于这个主题的文档没有给我提供有意义的指导:https://docs.pytest.org/en/latest/deprecations.html#calling-fixtures-directly
测试fixture本身的动机就来了,因为当我们的测试由于fixture中的bug而失败时,在TAP文件中没有正确跟踪,是什么促使我独立地测试fixture。在
pytest
有一个^{pytest
本身和插件而设计的;它在一个独立的运行中执行不影响当前测试运行的测试。示例:fixture
^{pr2}$spam
有一个问题,它只能与参数化测试一起工作;一旦在非参数化测试中请求它,它将引发一个AttributeError
。这意味着我们不能通过这样的常规测试进行测试:相反,我们使用
testdir
插件提供的testdir
fixture在独立的测试运行中执行测试:为测试加载测试代码的另一个方便的方法是
testdir.copy_example
方法。在pytest.ini
中设置根路径,例如:现在创建包含以下内容的文件
samples_for_fixture_tests/test_spam_fixture/test_x.py
:(这与之前作为字符串传递给
testdir.makepyfile
的代码相同)。上述试验变更为:这样,您就不必在测试中将Python代码维护为字符串,还可以通过使用
pytester
来重用现有的测试模块。也可以通过pytester_example_path
标记配置测试数据根:将查找与项目根目录相关的文件
fizz/buzz.txt
。在对于更多的例子,一定要查看} code 非常有帮助,因为遗憾的是,
pytest
文档中的Testing plugins部分;而且,您可能会发现my other answer对问题How can I test if a pytest fixture raises an exception?很有帮助,因为它包含了该主题的另一个工作示例。我还发现直接研究^{pytest
没有为它提供大量的文档,但是代码几乎是自文档化的。在相关问题 更多 >
编程相关推荐