---
slug: "django-test-url-patterns"
title: "Djangoで、テスト専用のURLパターンとビュー関数を作る"
description: "Django 1.9 までは、SimpleTestCase に urls 属性を書いていたようですが、コードを読むと"
url: "https://www.ytyng.com/blog/django-test-url-patterns"
publish_date: "2017-12-19T13:10:49Z"
created: "2017-12-19T13:10:49Z"
updated: "2026-02-27T04:53:17.895Z"
categories: []
keywords: ""
featured_image_url: "https://media.ytyng.com/resize/20230812/9e69926202f04b1999e597e0d565946f.png.webp?width=768"
has_video: false
has_music: false
video_urls: []
music_urls: []
lang: "ja"
---

# Djangoで、テスト専用のURLパターンとビュー関数を作る

<p>Django 1.9 までは、SimpleTestCase に urls 属性を書いていたようですが、コードを読むと</p>
<pre><span>def </span>_urlconf_setup(<span>self</span>):<br />    <span>if </span><span>hasattr</span>(<span>self</span>, <span>'urls'</span>):<br />        warnings.warn(<br />            <span>"SimpleTestCase.urls is deprecated and will be removed in "<br /></span><span>            "Django 1.10. Use @override_settings(ROOT_URLCONF=...) "<br /></span><span>            "in %s instead." </span>% <span>self</span>.__class__.<span>__name__</span>,<br />            RemovedInDjango110Warning, <span>stacklevel</span>=<span>2</span>)<br />        set_urlconf(<span>None</span>)<br />        <span>self</span>._old_root_urlconf = settings.ROOT_URLCONF<br />        settings.ROOT_URLCONF = <span>self</span>.urls<br />        clear_url_caches()</pre>
<p>deprecated と書いてあったので、これにならって</p>
<pre><span>@override_settings(ROOT_URLCONF=...) </span></pre>
<p>で書いたらうまくいきました。</p>
<p></p>
<pre><span>from </span>django.conf.urls <span>import </span>url<br /><span>from </span>django.core.urlresolvers <span>import </span>reverse<br /><span>from </span>django.http <span>import </span>JsonResponse<br /><span>from </span>django.test <span>import </span>TestCase, override_settings<br /><br /><span>from </span>lib.current_request <span>import </span>get_current_request<br /><br /><br /><span>def </span>current_request_view(request):<br />    <span>"""<br /></span><span>    current_request() 動作確認のためのビュー<br /></span><span>    """<br /></span><span>    </span>current_request = get_current_request()<br /><br />    <span>return </span>JsonResponse({<br />        <span>'current_request_path'</span>: current_request.path,<br />        <span>'request_path'</span>: request.path,<br />    })<br /><br /><br />urlpatterns = [<br />    url(<span>r'^current-request/$'</span>, current_request_view,<br />        <span>name</span>=<span>'current_request_view'</span>)<br />]<br /><br /><br /><span>class </span>CurrentRequestTest(TestCase):<br />    <span>@override_settings</span>(<span>ROOT_URLCONF</span>=<span>"lib.tests.test_current_request"</span>)<br />    <span>def </span>test_current_request(<span>self</span>):<br />        response = <span>self</span>.client.get(reverse(<span>'current_request_view'</span>))<br />        data = response.json()<br />        <span>self</span>.assertEqual(data[<span>'current_request_path'</span>], <span>'/current-request/'</span>)<br />        <span>self</span>.assertEqual(data[<span>'request_path'</span>], <span>'/current-request/'</span>)</pre>
<p></p>
