【问题标题】:How can I get code coverage data from Python BDD functional tests using Behave?如何使用 Behave 从 Python BDD 功能测试中获取代码覆盖率数据?
【发布时间】:2014-04-11 18:10:20
【问题描述】:

我还没有看到这个特定问题 (Test coverage tool for Behave test framework) 的答案,也没有看到任何 Google 搜索结果产生足够的答案。所以……

如何从 Behave 获取代码覆盖率报告?我很难相信没有 Python 开发人员使用 BDD 方法,我更难以相信那些使用 BDD 的 Python 开发人员在没有从他们的功能测试中获得代码覆盖率统计数据的情况下这样做。 Coverage.py 可以用来驱动 Behave 产生代码覆盖率吗?怎么样?

【问题讨论】:

  • 你好@fenreer,你知道如何让工作behave覆盖。接受的答案对我没有帮助。

标签: python code-coverage bdd coverage.py python-behave


【解决方案1】:

我不知道如何使用行为,但我将Cucumber 用于 BDD,我认为这可能几乎相似。所以我认为你应该能够在覆盖范围内使用行为。您必须指定要包含在文件中的文件..(我将它与黄瓜一起使用)。看看this 是否有帮助。

希望这能回答你的问题:)

# .coveragerc to control coverage.py
[run]
parallel = True

# if you want to include tests append tests/*
include =
    src/*
    *src*

[paths]
source =
    src/
    */src

tests =
    tests/
    */tests

【讨论】:

    【解决方案2】:

    按照上面大卫的建议。

    假设要测试的代码位于 app 目录中,请将以下内容添加到您的 .coveragerc 文件中:

    [run]
    source=app/
    

    从终端:

    coverage run $(which behave);
    

    然后您可以正常使用覆盖率报告或覆盖率 html。如果您未在 .coveragerc 文件中指定应用程序目录,coverage 将测试您的行为安装本地的所有 Python 库。

    【讨论】:

      【解决方案3】:

      Behave 可以生成 junit 覆盖率数据,coverage package 可以组合来自多个测试运行的这些数据,并生成 HTML 报告,您可以在 CI 环境中仔细阅读或自动发布。

      以下是我目前用于生成、组合和报告覆盖率的语句:

      cd your/repo/tests  # <-- Make sure you're inside your tests dir!
      rm -rf behave-reports/*
      behave --junit --junit-directory behave-reports
      coverage combine
      coverage html
      

      rm -rf behave-reports/* 强制删除了 behavior-reports/ 目录中的所有内容,这样我就可以保证得到一个新的覆盖率报告或什么都没有(在我的例子中产生 CI 失败)。请注意,如果您在本地运行测试,您需要在 .gitignore 文件(或等效文件)中添加一个条目,这样您就不会添加和提交测试结果。

      使用--junit 运行行为将产生junit 输出,而--junit-directory 标志告诉行为该将junit 数据写入磁盘的何处。

      运行 coverage combine 会吃掉所有代码覆盖率并将其合并到一个覆盖率文件中。

      最后,coverage html 生成了一个漂亮的 html 报告,其中包含所有组合的覆盖率数据。

      【讨论】:

        【解决方案4】:

        另一种选择,使用覆盖来运行行为的主脚本:

        coverage run /path/to/lib/python2.7/site-packages/behave/__main__.py
        

        当然,您需要在 .coveragerc 中指定要包含哪些源文件。

        【讨论】:

          猜你喜欢
          • 2018-03-24
          • 2017-10-09
          • 2017-02-21
          • 1970-01-01
          • 1970-01-01
          • 2015-03-04
          • 1970-01-01
          • 1970-01-01
          • 2018-10-02
          相关资源
          最近更新 更多