我定义了一个简单的 Django-TastyPie API(它是一个派生自 ModelResource 的基本类;我使用的是 0.9.11,最新的稳定版本)。UserProfileListResource 类获取 JSON 格式的用户列表(因此,内容类型为 application/json)。我没有复制代码,因为它在手动测试时工作正常。
我在 urls.py 中注册如下:
v1_api = Api(api_name='v1')
v1_api.register(UserProfileListResource())
urlpatterns += patterns('',
(r'^api/', include(v1_api.urls)))
当我使用浏览器手动测试它时它工作正常。
但是,当我使用 django.test.client.Client 编写一个简单的测试用例来发送请求时,我收到了一个 HTTP 200 响应,其中包含空响应内容和错误的内容类型(text/html 而不是 application/json)。
我在我的 API 代码中引入了一些日志记录语句,我意识到我的 API 代码根本没有被执行。
据我所知,还有其他人成功了。我有什么明显的遗漏吗?我被困住了!:-(
请在下面找到我的测试代码;我的测试类继承自 django.utils.unittest.TestCase (我也尝试过 django.test.testcases.TestCase;但没有乐趣):
admin_user_profile = self._create_user_profile()
browser_client = Client()
response = browser_client.get(self.LIST_USERS_URL)
self.assertTrue(HttpResponse.status_code, response.status_code)
logging.debug(response._headers) #prints {'content-type': ('Content-Type', 'text/html; charset=utf-8'), 'location': ('Location', 'http://testserver/api/v1/users/?username=user&api_key=1681f96d50ba54b410c91365a678ec07b6375efc')}
logging.debug(response.content) #prints empty string