python - 使用 django url 进行视图测试有意义吗?
问题描述
我是 django 的新手,我在一个网站上工作,我想为它编写单元测试,我有点困惑如何去做。从 django 获取 url 并测试他们的观点是否有意义?
from django.test import TestCase
from django.urls import get_resolver
from kernel.settings.base import TEMPLATES_DIR
class ViewTest(TestCase):
Site_urls= list(set(v[1] for k,v in get_resolver().reverse_dict.items()))
Site_urls= [i.replace('\\','') for i in Site_urls]
Site_urls= [i.replace('/','') for i in Site_urls]
Site_urls= [i.replace('$','') for i in Site_urls]
def urlexists(self):
for i in self.Site_urls:
with self.subTest(line= i):
response = self.client.get(f'/{i}/')
self.assertEqual(response.status_code, 200)
我的网址示例:
urlpatterns = [
path('about/', aboutView.as_view(),name='About'),
]
还有其他测试,例如视图是否使用获取 url 名称的正确模板...
那么这是正确的做法还是我应该使用静态文件?
解决方案
是的,如果你想检查是否url
对应正确view
。
这是一个例子
url
对应右边view
from .views import register_view
from django.urls.base import resolve
class RegisterTests(TestCase):
def test_register_view(self):
view = resolve('/account/register')
self.assertEqual(
view.func.__name__,
register_view.__name__,
)
运行时python manage.py test
,如果设置正确的视图,它应该通过。
url
对应右边template
使用reverse
和client.get
访问您的网址。
from django.urls.base import resolve, reverse # <--- new
from .views import register_view
class RegisterTests(TestCase):
def test_register_view(self):
...
def test_register_template(self): # <--- new
url = reverse('account:register')
self.response = self.client.get(url)
self.assertEqual(self.response.status_code, 200)
self.assertTemplateUsed(self.response, 'account/register.html')
推荐阅读
- continuous-integration - bitbucket-pipelines.yml 文件中的部署环境“暂存”在管道中多次出现
- javascript - v-menu 在看到 v-list-item onclick 之前关闭
- laravel - livewire 类型提示的清洁解决方案
- r - Hadley 将 dbplyr 用于较小的数据集是什么意思?
- tsql - 如果 try_parse 出错,如何返回 null
- python - 无法在 Raspberry Pi 4 中初始化两个 VideoCapture 实例
- reactjs - Storybook 打破了现有 Nextjs/React 应用程序的图像加载
- animation - 如何更改 svg 的文本
- autoit - Auto It 脚本调试
- c# - 无法读取 API 响应内容