python - 如何在我的测试套件中找到未使用的步骤定义?

标签 python python-behave

当我运行我的测试套件时,behave 的默认输出显示了步骤的来源,这一切都很好而且花花公子,除了使用此输出来查找不是 < em>已使用 需要我手动标记已使用的步骤,以便发现未使用的步骤。

behave 能否以自动报告未在测试套件中使用的步骤定义的方式调用?

最佳答案

有一个内置的方法,但没有很好的文档记录。在 formatters 列表中,有一个名为steps.usage的格式化程序,它被描述为:

Shows how step definitions are used by steps (in feature files).

此描述并未明确说明,但此格式化程序不仅报告功能文件如何使用这些步骤,而且报告未使用的步骤。如果套件中有未使用的步骤,输出将包含如下内容:

UNUSED STEP DEFINITIONS[8]:
  @then('something')             # features/steps/something.py:1
  @given('some condition')       # features/steps/something.py:12
  [...]

方括号中的数字是找到的未定义步骤定义的数量。然后列出每个未定义的步骤,每行一个。该行以 @then/@given/etc 开头。用于定义步骤的装饰器。然后是一个#字符,后面给出了步骤定义的文件和行号。

你可以这样使用它:

behave -f steps.usage --dry-run

重要提示:记者对特征文件进行了静态分析。这意味着如果在执行时您的步骤执行其他步骤,那么以这种方式运行的步骤将不会被格式化程序视为“已使用”,除非它们直接用于一个功能文件。这可能会导致格式化程序错误地将某些步骤报告为未使用。 (这发生在我第一次尝试运行时。)例如,以下定义在执行时调用两个步骤:

@when(u"the user does something")
def step_impl(context):
    context.execute_steps(u"""
    When the user does something else
    Then something special happens
    """)

这两个步骤是通过 context.execute_steps 使用的,不会steps.usage 检测到,因此这些步骤将被视为未使用,除非它们逐字出现在功能文件中。

请注意,您可以在没有 --dry-run 的情况下运行格式化程序,在这种情况下,它将真正运行您的套件并在最后生成报告。但是,这样做并不能解决我刚才提到的问题。我试过了,希望它能将我的那些仅通过 context.execute_steps 使用的步骤标记为已使用,但它没有用。

关于python - 如何在我的测试套件中找到未使用的步骤定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48512115/

相关文章:

python - Behave 测试框架的测试覆盖工具

python - python 行为中不同步骤名称显示的不明确步骤异常

python - 如何使用 Keras 中的 Conv2DTranspose 获得与原始输入大小相同的层?

python - 在字典列表中查找最大值

python - 对不同的错误分类进行不同的权重 keras

python - 在 behave python 中定义上下文变量

python - OperationalError : (1045, "Access denied for user ' root' @'localhost' (using password: NO)")

python - 如何在 pandas 数据框中取消堆叠字典列?

python - 行为 : How to import steps from another file?