unitarias - testcase django
Django UrlResolver, agregando URL en tiempo de ejecuciĆ³n para probar (3)
Dado que el uso de Django 1.8 de django.test.TestCase.urls
está en desuso . Puede usar django.test.utils.override_settings
en django.test.utils.override_settings
lugar:
from django.test import TestCase
from django.test.utils import override_settings
urlpatterns = [
# custom urlconf
]
@override_settings(ROOT_URLCONF=__name__)
class MyTestCase(TestCase):
pass
override_settings
se puede aplicar a toda una clase o a un método en particular.
Estoy buscando hacer algunas pruebas y todavía no estoy muy familiarizado con el URLResolver
pero me gustaría resolver este problema rápidamente.
En un TestCase
, me gustaría agregar una URL a la resolución para poder usar Client.get(''/url/'')
y mantenerlo separado de urls.py
Sé que esto fue preguntado hace un tiempo, pero pensé que lo respondería nuevamente para ofrecer algo más completo y actualizado.
Tiene dos opciones para resolver esto, una es proporcionar su propio archivo de URL, como lo sugiere la respuesta de SystemParadox:
class MyTestCase(TestCase):
urls = ''my_app.test_urls''
El otro es parche de mono tus urls. Esta NO es la forma recomendada de lidiar con las URL principales, pero es posible que te encuentres en una situación en la que aún la necesites. Para hacer esto para un solo caso de prueba sin afectar el resto, debe hacerlo en su método setUp()
y luego tearDown()
en su método 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
Tenga en cuenta que esto no funcionará si omite el atributo de clase de urls
. Esto se debe a que, de lo contrario, las urls se almacenarán en caché y la aplicación de parches no tendrá efecto si realiza la prueba junto con otros casos de prueba.
https://docs.djangoproject.com/en/1.5/topics/testing/overview/#urlconf-configuration
En tu prueba:
class TestMyViews(TestCase):
urls = ''myapp.test_urls''
Esto usará myapp/test_urls.py
como ROOT_URLCONF
.