【问题标题】:Python unittest philosophy and orderingPython 单元测试哲学和排序
【发布时间】:2023-04-06 03:39:02
【问题描述】:

虽然单元测试的理念是测试可以按任何顺序运行并且它应该通过,但如果您正在实现一个没有其他方式与服务器通信的 API 怎么办......并且您需要测试某个特定的非常基本的功能(如删除)才能执行更复杂的任务?那么订购测试是否合理?

如果是这样,我该如何使用 python 的unittest 模块呢?

【问题讨论】:

  • stackoverflow.com/questions/4095319/unittest-tests-order 中的 Elmar 似乎给出了答案。
  • 澄清一下:你是说你想先运行删除测试,因为如果它失败了就没有必要运行其他测试了?
  • 即使第一个测试失败了,后面的 delete 测试仍然会运行,那么问题是什么?
  • 概括地说,“如果您的单元测试依赖于外部服务或其他单元测试,那么它们就不是单元测试。”听起来有点教条。但这是一个很大的危险信号。如果您正在测试服务本身的复杂依赖语义,那么您可能希望将所有这些“步骤”封装在一个测试中。但这变成了协议测试。单元测试真的应该是独立的。
  • @ultimatebuster:您在这里尝试做的是某种集成测试,而不是单元测试。

标签: python unit-testing


【解决方案1】:

您似乎已经意识到您的单元测试应该是独立的。我可以看到您希望以某种固定顺序运行测试的唯一另一个原因是,如果早期测试失败,您希望停止运行该套件。为此,您可以使用command-line option

-f, --failfast

在第一个错误或失败时停止测试运​​行。

顺便说一下,测试是按字母顺序运行的:

运行各种测试用例的顺序是通过根据字符串的内置排序对测试函数名称进行排序来确定的。

(docs)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-17
    • 2012-04-21
    • 2012-03-03
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    相关资源
    最近更新 更多