gpt4 book ai didi

python - 反向修补的 django-localeurl 在单元测试中不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 06:06:10 25 4
gpt4 key购买 nike

我的应用程序使用的是 django-localeurl。我的单元测试在 django 1.5.5 中没问题,但自从我转到 django 1.6.2 后,由于响应状态为 301,我遇到了很多错误。

这似乎是由于不考虑语言环境前缀的错误 url 引起的。换句话说,在单元测试中调用 reverse 时,会调用通常的 django reverse 而不是 localeurl reverse

我检查过 patch_reverse 在单元测试中被调用。我的调用位于我的主 urls.py 的顶部。好像还可以。

但是由于某种原因,django reverse 被某些东西恢复了。

这个问题似乎只发生在单元测试期间。运行应用程序时,URL 已正确本地化。

我认为该问题对应于 django-localeurl 中的以下问题:https://bitbucket.org/carljm/django-localeurl/issue/22/test-problem

有谁知道什么会导致这个问题(单元测试机制在 django 1.6 中发生了变化,是这个原因吗?)以及如何解决它?


更新

如果我强制执行以下设置,则不会出现此问题

TEST_RUNNER = 'django.test.simple.DjangoTestSuiteRunner'

最佳答案

看来原因是 DiscoverRunner(在 django 1.6 中运行测试的新方法)提前导入测试模块以构建要运行的测试列表。

因此,测试模块的导入在设置和 url 的导入之前执行。然后,模块在 urls.py

中打补丁之前导入 django reverse

我的解决方法是在测试模块的开头强制打补丁。我认为这不是完美的解决方案,但它确实有效。

关于python - 反向修补的 django-localeurl 在单元测试中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21940971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com