【问题标题】:Code coverage for a python google-app-engine site?python google-app-engine 网站的代码覆盖率?
【发布时间】:2013-09-08 21:39:05
【问题描述】:

我曾经能够通过如下命令行获得对 Google App Engine 测试进行单元测试的代码覆盖率:

coverage run --omit=/Applications --source=../mycode --branch /usr/local/bin/dev_appserver.py ...

[这使用了 Ned Batchelder 的 coverage.py] 但是,在最近更新到最新的 SDK 之后(在长时间没有处理代码之后),我发现这不再起作用了。服务器进程必须在子进程等中运行应用程序代码。

我试过关注这个http://nedbatchelder.com/code/coverage/subprocess.html#subprocess

我看到另一个关于此问题的半近期问题,其中有一条评论表明 coverage.py 不起作用。 Getting coverage with dev_appserver.py excludes my project files

我花了几个令人沮丧的时间在谷歌上搜索并尝试了一些没有运气的事情。所以……这还不可能吗?有没有人以任何方式获得代码覆盖率?是否有其他工具可以计算代码覆盖率?

【问题讨论】:

  • PyCharm 与覆盖率、应用引擎和单元测试配合得很好

标签: python google-app-engine unit-testing code-coverage


【解决方案1】:

【讨论】:

  • 感谢您的想法 - 请点赞。这可能会节省一些时间来了解旧服务器是否可用。对我来说不幸的是,我现在已经做了足够多的更改,这可能需要相当多的工作才能让新旧服务器都正常工作。不过,我会记住这一点。
【解决方案2】:

dragonx 建议使用 old_dev_appserver.py 对我来说效果很好。更具体地说,这是我在 MacOS X 10.9.3 上使用 App Engine 1.9.6、coverage 3.7.1 和 Python 2.7 所做的:

MyAppDir 是包含 app.yaml 的目录。
--omit 是可选的。你很可能不需要它。我已经将我的测试代码移出 MyAppDir,因为我不想让 appcfg.py 上传它。
--branch 是可选的,但很有用。
old_dev_appserver.py (目前)随 App Engine 一起提供。无需下载或安装副本。

# One time:
sudo pip install coverage

# Start the server:
APP=MyAppDir
coverage run \
  --source=$APP \
  --omit='$APP/exclude/*' \
  --branch \
  /usr/local/bin/old_dev_appserver.py \
  $APP

# Run your tests in a separate tab. In my case I use this command:
webdriver/system_tests.py

# Kill the server with Control-C once the tests are finished.

# Display a quick text summary:
coverage report -m

# Generate and open an HTML report linking to line by line coverage:
coverage html
open htmlcov/index.html

我相对简单的应用程序(电子邮件、全文搜索、ndb、urlfetch、webapp2)不需要任何更改即可与 old_dev_appserver 一起使用。我确实删除了传递给 dev_appserver 的标志。没有他们我也能活下去。 --port 如果您需要,它会被支持,其他一些也是如此。

如果您希望在 dev_appserver.py 的未来版本中看到代码覆盖支持,请投票给 Add support for code coverage tests and some documentation,以前的 https://code.google.com/p/googleappengine/issues/detail?id=4936

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-30
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多