【问题标题】:Python unittest framework: Test descriptionPython unittest 框架:测试说明
【发布时间】:2017-01-18 18:01:44
【问题描述】:

在 python 中提供测试脚本描述的最佳做法是什么?

显然我可以将 cmets 放在测试用例下方,但想知道是否有任何标准做法(我应该编写的任何方法)来提供测试用例的描述(关于测试用例应该做什么的详细信息)?

你会这样写测试描述吗?:

Class TestFoo:
    def testfoo1():
    """
    test description:
    step1:
    step2: 
    """

任何建议/参考将不胜感激。

【问题讨论】:

    标签: python unit-testing


    【解决方案1】:

    如果您使用 python 的unittest 模块,测试方法文档字符串是放置该信息的标准位置。 unittest 将使用该文档字符串来格式化输出等。

    【讨论】:

      【解决方案2】:

      unittest 框架中,您有 shortDecription方法:

      shortDescription()

      返回测试的描述,如果没有提供描述,则返回None。此方法的默认实现返回测试方法的文档字符串的第一行(如果可用)。

      所以,事实上,使用方法 docstring 是一个不错的地方。不过,您可能必须在类声明中从 TestCase 继承才能让 runner 像这样工作。

      对于最佳实践:以简洁但有用的方式命名测试用例(类)和测试方法,这足以让开发人员对如果该特定测试失败,则出现问题的地方。这样做的先决条件是每个测试方法都应该只测试一个东西,而不是断言一大堆不同的东西。

      使用合理的测试名称,通常不需要包含“关于测试用例应该做什么的详细信息”的文档字符串。如果您有现有的大型测试来检查许多事情,您可能希望将它们拆分为一组较小的测试,每个测试都断言一个且仅一个单独的事情。

      【讨论】:

      • 我以前从未注意到shortDescription。那里的文档有点亮——具体来说,似乎需要某种方法来知道要为哪个测试编写描述......
      • 这可能只是实例上的可变状态(TestCase 毕竟是一个类)
      • 哦,没关系,基本方法的implementation 依赖于一些基于状态的实现细节来确定返回什么。我不确定用户应该如何以有用的方式覆盖该方法...
      • 我不建议重写该方法。我正在证实您可以使用文档字符串,因为在TestCase 上定义了这种方法
      • 是的——我并没有试图攻击你的答案或任何东西。我更多地思考这似乎是一种在单元测试 API 中公开的愚蠢方法。我认为你的回答是好的(比我的更好,因为它指出只有 first 行实际上用于格式化输出)。
      【解决方案3】:

      最好的方法是让类的名称具有足够的描述性,以至于不需要描述。

      除此之外,文档字符串是最好的方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-22
        • 1970-01-01
        • 2011-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多