我还没有看到这个具体问题(Test coverage tool for Behave test framework)的答案,我还没有看到任何谷歌搜索结果产生足够的答案。因此...
如何从Behave获取代码覆盖率报告?我发现很难相信没有使用BDD方法的Python开发人员,我发现更难以相信那些使用BDD的Python开发人员在没有功能测试的代码覆盖统计数据的情况下这样做。可以使用Coverage.py来驱动Behave以产生代码覆盖吗?怎么样?
答案 0 :(得分:2)
我不知道如何使用行为,但我使用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
答案 1 :(得分:1)
继David的建议之后。
假设要测试的代码位于app目录中,请将以下内容添加到 .coveragerc 文件中:
[run]
source=app/
从终端:
coverage run $(which behave);
然后您可以正常使用覆盖率报告或覆盖率html。如果您未在 .coveragerc 文件中指定app dir,则coverage将测试您的行为安装本地的所有Python库。
答案 2 :(得分:0)
Behave可以生成junit覆盖数据,coverage package可以组合来自多个测试运行的数据,也可以生成HTML报告,您可以在CI环境中仔细阅读或自动发布。
以下是我目前用于生成,组合和报告coverage的语句:
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/*
强制删除了behave-reports /目录中的所有内容,这样我就可以保证获得新的覆盖率报告,或者根本不保证(在我的情况下会导致CI失败)。请注意,如果您在本地运行测试,则需要在.gitignore
文件(或等效文件)中添加一个条目,这样您就不会添加和提交测试结果。
使用--junit
运行行为将生成junit输出,而--junit-directory
标志告诉您在磁盘上写入该junit数据的位置。
运行coverage combine
会占用所有代码覆盖率并将其合并到一个覆盖文件中。
最后,coverage html
会生成一个包含所有合并覆盖数据的漂亮html报告。
答案 3 :(得分:0)
另一个选项,使用coverage来运行behave的主脚本:
coverage run /path/to/lib/python2.7/site-packages/behave/__main__.py
当然,您需要在.coveragerc
中指定要包含的源文件。