【问题标题】:How to set the default libraries when doing unit tests under Python 2.7Python 2.7下进行单元测试时如何设置默认库
【发布时间】:2012-04-12 14:38:09
【问题描述】:

我正在将我的 Google AppEngine 解决方案从 Python 2.5 迁移到 2.7。应用程序迁移相对容易,但我在单元测试方面遇到了困难。

在 2.5 版本中,我使用 use_library 函数将 django 版本设置为 1.2,但 2.7 不再支持此功能。现在我在 app.yaml 中设置默认版本。

当我现在运行我的单元测试时,默认 django 版本变为 0.96,我无法将 1.2 设置为默认版本。

谁知道我如何设置单元测试的默认库,以便匹配 app.yaml 中的设置?

【问题讨论】:

  • 您找到解决方案了吗?我现在知道你的问题是很久以前的问题了,但我也有同样的问题。

标签: unit-testing google-app-engine python-2.7


【解决方案1】:

app.yaml 中使用以下语法来设置始终使用的 Django 版本:

libraries:
- name: django
  version: "1.3"

有关如何在 Python 2.7 here 中设置使用 3rd 方库的更多详细信息。

【讨论】:

  • 我已经按照你说的做了,在开发服务器和生产环境上运行应用程序时效果很好。但是,当我运行单元测试时,此 app.yaml 配置未读取,我得到默认的 0.96 版本
  • @aadjemonkeyrock 啊,检查 Django 是从哪里导入的,首先是 import django,然后是 django.__file__。回想一下,在运行测试时,您不是在 GAE 环境中运行,而是使用您自己的盒子配置。
  • 这在运行单元测试时对我不起作用。 use_library 也不起作用,因为由于某种原因,当从 unittests 运行时,最大可用 django 版本为 1.3(似乎最后在 python 2.5 中可用),而我需要 Django 1.5
  • @Alex-OffiServ 无法真正帮助您,因为我已经有一段时间没有使用 GAE 了。如果您设法找到解决方案,请发表评论和/或编辑。
【解决方案2】:

app.yaml 配置在使用 webtest 应用程序和 NoseGAE 进行单元测试时不应用。 use_library 也不起作用。

这种情况的正确解决方案是为首选 lib 版本提供正确的 python 路径,例如PYTHONPATH=../google_appengine/lib/django-1.5 运行鼻子测试时。

【讨论】:

    猜你喜欢
    • 2014-06-19
    • 1970-01-01
    • 2019-11-04
    • 1970-01-01
    • 2020-11-24
    • 1970-01-01
    • 2019-07-08
    • 2013-09-11
    • 1970-01-01
    相关资源
    最近更新 更多