10

我还没有看到这个特定问题的答案(行为测试框架的测试覆盖工具),也没有看到任何谷歌搜索结果产生足够的答案。所以...

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

4

4 回答 4

2

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

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

# .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
于 2014-06-26T04:35:44.783 回答
2

继上面大卫的建议之后。

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

[run]
source=app/

从终端:

coverage run $(which behave);

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

于 2016-09-16T20:39:45.233 回答
1

Behave 可以生成 junit 覆盖率数据,覆盖率包可以组合来自多个测试运行的这些数据,并生成一个 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

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

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

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

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

于 2016-05-25T20:51:23.943 回答
0

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

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

当然,您需要指定.coveragerc要包含的源文件。

于 2016-09-15T21:03:56.073 回答