【发布时间】:2021-08-16 20:25:38
【问题描述】:
我目前有一个接受 GET 请求的端点,用于检索某个日期范围内的用户(实际上没有必要解释“为什么”)。具体端点如下所示:GET /users/?fromdate={yyyy-mm-dd}&todate={yyyy-mm-dd}
例如,我可以有这样的请求:GET /users/?fromdate=2017-01-01&todate=2017-04-01
没有过多详细介绍urls.py 和views.py,我已经指定了路由器寄存器和路径以接受到此端点的请求(工作正常):
urls.py:
router = routers.DefaultRouter()
router.register(r"user", views.UserViewSet, basename='user')
urlpatterns = [
path('user/', views.UserViewSet.as_view({'get': 'user'}), name='user')
]
我现在正在尝试运行单元测试,只是为了向此端点发送请求
我的 test_user.py 类的一部分如下所示:
def test_user_list(self):
response = self.client.get(reverse('user', kwargs={'fromdate': '2017-01-01', 'todate': '2017-04-01'})), format='json')
self.assertEqual(response.status_code, 200)
但是,当我运行单元测试时,我得到一个错误:
使用关键字参数“{'fromdate': '2017-01-01', 'todate': '2017-04-01'}' 未找到。尝试了 1 种模式:['/user/$']
我认为错误是由于我的路径(虽然它通过像 Postman 这样的 REST 客户端手动工作)没有指定期望 path('user/', views.UserViewSet.as_view({'get': 'user'}), name='user') 的参数
那么我如何指定参数来满足上面的“fromdate”和“todate”?我查看了documentation,但除了/articles/2005/03/ 之类的网址之外,我找不到任何其他内容。
【问题讨论】:
标签: python django unit-testing django-rest-framework django-unittest