【问题标题】:Testing TastyPie APIs using Django Test Client always results in empty HTTP 200 responses使用 Django 测试客户端测试 TastyPie API 总是导致空的 HTTP 200 响应
【发布时间】:2012-07-02 17:49:06
【问题描述】:

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

【问题讨论】:

    标签: python django automated-tests tastypie


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-01-03
      • 1970-01-01
      • 1970-01-01
      • 2011-06-13
      • 1970-01-01
      • 2011-12-18
      • 2011-05-07
      • 2013-01-01
      • 1970-01-01
      相关资源
      最近更新 更多