0

我定义了一个简单的 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
4

1 回答 1

2

我已经弄清楚我做错了什么。我继承自 django.test.testcases.TestCase 而不是 django.test.TestCase (unittests.TestCase 只是不起作用)。当我改变它时,一切都开始起作用了。

我希望这可以帮助其他人解决同样的问题。

于 2012-07-02T18:26:15.947 回答