私はいくつかのテストを行おうとしていますが、URLResolver
まだよくわかりませんが、この問題をすぐに解決したいと考えています。
では、リゾルバーに URL を追加して、それを とは別にTestCase
使用および保持できるようにしたいと考えています。Client.get('/url/')
urls.py
私はいくつかのテストを行おうとしていますが、URLResolver
まだよくわかりませんが、この問題をすぐに解決したいと考えています。
では、リゾルバーに URL を追加して、それを とは別にTestCase
使用および保持できるようにしたいと考えています。Client.get('/url/')
urls.py
https://docs.djangoproject.com/en/2.1/topics/testing/tools/#urlconf-configuration
あなたのテストでは:
class TestMyViews(TestCase):
urls = 'myapp.test_urls'
これは として使用myapp/test_urls.py
されますROOT_URLCONF
。
これは少し前に尋ねられたことは知っていますが、より完全で最新のものを提供するためにもう一度答えたいと思いました.
これを解決するには 2 つのオプションがあります。1 つは、SystemParadox の回答で示唆されているように、独自の URL ファイルを提供することです。
class MyTestCase(TestCase):
urls = 'my_app.test_urls'
もう 1 つは、URL にモンキー パッチを適用することです。これは URL のオーバーライドに対処するための推奨される方法ではありませんが、それでも必要な状況に陥る可能性があります。残りに影響を与えずに単一のテストケースに対してこれを行うには、setUp()
メソッドでそれを実行してから、メソッドでクリーンアップする必要がありますtearDown()
。
import my_app.urls
from django.conf.urls import patterns
class MyTestCase(TestCase):
urls = 'my_app.urls'
def setUp(self):
super(MyTestCase, self).setUp()
self.original_urls = my_app.urls.urlpatterns
my_app.urls.urlpatterns += patterns(
'',
(r'^my/test/url/pattern$', my_view),
)
def tearDown(self):
super(MyTestCase, self).tearDown()
my_app.urls.urlpatterns = self.original_urls
urls
class 属性を省略した場合は動作しませんのでご注意ください。これは、他のテスト ケースと一緒にテストを実行すると、URL がキャッシュされ、モンキー パッチが有効にならないためです。