python - 为什么我不能在 Django rest-framework unittest 中传递位置参数
问题描述
我已经实现了一个测试方法,如下所示:
request = self.factory.get(reverse('users:user-details', kwargs={'user_id': 'd6cb0d1850241a04caaae516f27762d0c0cbc716'}))
response = UserDetailsAPIView.as_view()(request)
URL路径如下:
url(
r'users/(?P<user_id>\w+)/details/?$',
UserDetailsAPIView.as_view(),
name='user-details'
)
它的API视图如下:
class UserDetailsAPIView(APIView):
http_method_names = ['get']
def get(self, request, user_id, *args, **kwargs):
为什么我收到以下错误:
Traceback (most recent call last):
File "/home/.local/lib/python3.5/site-packages/mock/mock.py", line 1305, in patched
return func(*args, **keywargs)
File "/vagrant/apps/users/tests/test_views.py", line 95, in test_get_user_detail_by_user_id
response = UserDetailsAPIView.as_view()(request)
File "/home/.local/lib/python3.5/site-packages/django/views/decorators/csrf.py", line 58, in wrapped_view
return view_func(*args, **kwargs)
File "/home/.local/lib/python3.5/site-packages/django/views/generic/base.py", line 68, in view
return self.dispatch(request, *args, **kwargs)
File "/home/.local/lib/python3.5/site-packages/rest_framework/views.py", line 495, in dispatch
response = self.handle_exception(exc)
File "/home/.local/lib/python3.5/site-packages/rest_framework/views.py", line 455, in handle_exception
self.raise_uncaught_exception(exc)
File "/home/.local/lib/python3.5/site-packages/rest_framework/views.py", line 492, in dispatch
response = handler(request, *args, **kwargs)
TypeError: get() missing 1 required positional argument: 'user_id'
解决方案
您作为 kwargs 而不是 args 传递。
替换这个:
request = self.factory.get(reverse('users:user-details', args=('d6cb0d1850241a04caaae516f27762d0c0cbc716',)))
推荐阅读
- windows - Windows CMD:如何使用模式递归删除文件夹
- java - Apache Camel:引号会破坏 URI
- android - Android 社交网络帐户共享
- outlook-addin - Outlook 加载项按钮在 20 秒后出现在功能区上
- java - 无法从大小为 2 的集合中获取索引为 2 的元素
- python - Python Subprocess 有效地检查子进程是否终止
- php - 如何使用函数 yii2 创建 url
- c++ - 无法从其他线程播放 QMediaPlayer
- powershell - 比较来自多个 DC 的用户的 LastLoginDate
- inno-setup - Inno Setup 5.5.9 中的多个 WizardSmallImageFiles