许多 pytest 夹具与一个大型"container"夹具



我们有一个大型python项目,该项目使用pytest进行测试,目前使用unittest样式的类,我们开始将其迁移到基于模块的函数样式测试。

我们正在讨论是否应该:

  1. 将我们的大型测试基类拆分为许多小型、独立的pytest固定装置
  2. 维护一个大型固定装置,该固定装置缓慢地导入所有其他固定装置

许多固定装置的优点:

  • 模块化,可能易于维护
  • 每个测试只使用它需要的东西

一个大型固定装置的优点:

  • 更少的样板代码,每个测试只有一个额外的关键字arg

我们该怎么办?欢迎任何意见,只要它们得到解释。谢谢:(

与大型固定装置相比,使用特定固定装置有很多优势。由于这个pytest获得了它的流行。

  1. 不同的夹具可以再现被测系统的各种互斥状态。当您想要测试系统行为的各种情况时,这很有用。单个夹具不能提供这样的灵活性
  2. Pytest允许您在一个fixture使用另一个fixure的执行结果时灵活地组合对fixture的调用。分解是一种有效的编程模式,测试也不例外
  3. pytest中的fixture可以参数化,这是一个非常有用的功能,但如果你为所有测试制作一个大的fixture,它的应用将是不可能的
  4. Conftest.py是pytest中特定的目录。因此,pytest中的fixture可以是全局的(位于conftest中(、本地的(位于测试模块内部(和中间的(位于包级别的conftest(。这允许您重用通用代码,同时在特定情况下不会失去灵活性
  5. 固定装置具有范围(功能、类、模块、会话(,这提供了额外的灵活性

​​pytest框架是在必要时在这些级别上使用fixture。与xUnit样式相比,这是一个很大的优势,但如果不使用这些优势,那么向pytest的转换就没有意义了。

最新更新