许多pytest灯具与一个大型"容器"夹具相比

Tza*_*ach 5 python unit-testing pytest

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

我们是否应该:

  1. 将我们的大型测试基础分成许多小型,独立的pytest固定装置; 要么
  2. 保持一个大型夹具,懒洋洋地进口所有其他固定装置.

许多灯具的优点:

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

一个大型夹具的优点:

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

我们应该做什么?只要有解释,任何意见都是受欢迎的.谢谢 :)

And*_*kov 6

使用特定的固定装置比大型固定装置有很多优点。感谢这个 pytest 的普及。

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

pytest 框架 \xe2\x80\x8b\xe2\x80\x8b 的根本思想是在必要时在这些级别使用固定装置。这是相对于 xUnit 风格的一大优势,但如果你不利用这些优势,那么转向 pytest 就没有意义。

\n