jbc*_*tin 28 django url unit-testing testcase
我正在寻找一些测试,但我还不太熟悉,URLResolver但我想快速解决这个问题.
在a中TestCase,我想在解析器中添加一个URL,以便我可以使用Client.get('/url/')它并将其与之分开urls.py.
ren*_*kiy 33
由于不推荐使用django.test.TestCase.urls Django 1.8 .你可以django.test.utils.override_settings改用:
from django.test import TestCase
from django.test.utils import override_settings
urlpatterns = [
# custom urlconf
]
@override_settings(ROOT_URLCONF=__name__)
class MyTestCase(TestCase):
pass
Run Code Online (Sandbox Code Playgroud)
override_settings 可以应用于整个类或特定方法.
Sys*_*dox 25
https://docs.djangoproject.com/en/2.1/topics/testing/tools/#urlconf-configuration
在你的测试中:
class TestMyViews(TestCase):
urls = 'myapp.test_urls'
Run Code Online (Sandbox Code Playgroud)
这将myapp/test_urls.py用作ROOT_URLCONF.
我知道这是前一段时间被问到的,但我想我会再次回答它,以提供更完整和最新的内容.
您有两个选项可以解决这个问题,一个是提供您自己的网址文件,如SystemParadox的回答所示:
class MyTestCase(TestCase):
urls = 'my_app.test_urls'
Run Code Online (Sandbox Code Playgroud)
另一种是修补你的网址.这不是处理覆盖网址的推荐方法,但您可能会遇到仍然需要它的情况.要在不影响其余测试的情况下对单个测试用例执行此操作,您应该在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
Run Code Online (Sandbox Code Playgroud)
请注意,如果省略urlsclass属性,这将不起作用.这是因为如果您将测试与其他测试用例一起运行,则会缓存URL并且您的猴子修补不会生效.
| 归档时间: |
|
| 查看次数: |
7323 次 |
| 最近记录: |