unitest unitarias test pruebas form django unit-testing url testcase

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.