---
slug: "django-test-url-patterns"
title: "Creating Test-Specific URL Patterns and View Functions in Django"
description: "Until Django 1.9, it seems that the urls attribute was written in SimpleTestCase, but when reading the code:"
url: "https://www.ytyng.com/en/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: "en"
---

# Creating Test-Specific URL Patterns and View Functions in Django

<p>Until Django 1.9, it seems that the <code>urls</code> attribute was written in <code>SimpleTestCase</code>, but when reading the code:</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>Since it was written as deprecated, I followed this:</p>
<pre><span>@override_settings(ROOT_URLCONF=...) </span></pre>
<p>and it worked.</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>    View for checking the operation of 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>
