django - 由于 http://testserver 前缀,Django assertRedirects 测试失败
问题描述
我想测试/sitemap.xml/
重定向到/sitemap.xml
. 我正在使用这段代码:
res = self.client.get('/sitemap.xml/')
self.assertRedirects(res, '/sitemap.xml', status_code=301)
并得到以下错误:
AssertionError: Response redirected to 'http://testserver/sitemap.xml', expected '/sitemap.xml'
我应该如何编写这个测试以避免testserver
冲突?
解决方案
我猜重定向 url/response 是使用 build_absolute_uri 或类似的东西使用完整路径创建的。?只是猜测...
首先,从长远来看,使用 urlnames 而不是硬编码路径可能更容易。url=reverse('sitemap.xml'), url = reverse('sitemap.xml') + '/' 给出一些想法...
无论如何,这可以解决您的问题,而不必担心主机。
res = self.client.get('/sitemap.xml/')
expected_url = res.wsgi_request.build_absolute_uri('/sitemap.xml')
self.assertRedirects(res, expected_url, status_code=301)
(在 Django 1.10.6 上测试)
推荐阅读
- shell - shell中的gnuplot频率直方图,只有一列信息
- python - 将音频文件加载到模板会导致 ConnectionResetError: [Errno 54] Connection reset by peer (Django, Python)
- docker - 如何让 docker 客户端与多个守护进程通信
- python - 处理(或替代)从 Django 中的单个模型创建多个表的用例的最佳方法是什么
- vue.js - 在 Vue JS 中初始加载后切换类
- sql-server - 如何在多对多表中找到缺失的对?
- api - 刚刚在 Openshift 集群中安装了 3scale API 管理,我看不到自管理网关
- python - 如何将我的终端生成的数据放入一个 numpy 数组
- r - 如何在闪亮 (R) 中绘制流程图 (bupar)?
- r - 如何解决闪亮的 sliderInput 错误?