2014-02-21 149 views
2

我的應用程序正在使用django-localeurl。我的單元測試在django 1.5.5中沒有問題,但是由於我搬到了django 1.6.2,因爲狀態301,我有很多錯誤。django-localeurl修補反向在單元測試中不起作用

看來這是由不考慮地區前綴的錯誤地址引起的。換句話說,在單元測試中調用reverse時,調用通常的django reverse而不是localeurl reverse

我檢查過在unittest中調用patch_reverse。我的電話位於我的主要urls.py的頂部。看起來沒問題。

但由於任何原因,django reverse恢復的東西。

此問題似乎僅在單元測試期間發生。運行應用程序時,這些網址已正確本地化。

我認爲這個問題對應於以下問題Django的localeurl:https://bitbucket.org/carljm/django-localeurl/issue/22/test-problem

有誰知道什麼可能導致此問題(單元測試機制在Django 1.6已經改變了,是什麼原因呢?),以及如何修理它?


更新

如果我強迫不會發生此問題如下設置

TEST_RUNNER = 'django.test.simple.DjangoTestSuiteRunner' 

回答

0

看來,原因是DiscoverRunner(新的方式來運行在Django測試1.6)預先導入測試模塊以建立要運行的測試列表。

因此,測試模塊的導入在導入設置和url之前執行。然後,模塊在進行修補之前先導入django reverseurls.py

我的修復程序是在我的測試模塊開始時強制該修補程序。我認爲這不是完美的解決方案,但它的工作原理。

相關問題