シンプルな 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 を使用してリクエストを送信する簡単なテスト ケースを作成すると、空のレスポンス コンテンツと間違ったコンテンツ タイプ (application/json ではなく text/html) を含む HTTP 200 レスポンスを受け取ります。
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