我使用Django REST Framework開發了一個RESTful API服務器,當應用程序成熟時,實體簽名有時會發生變化。是否有可能根據Django中的文檔測試REST API?
雖然寫這個程序的測試,我開始懷疑是否有工具來檢查API返回的數據作爲文件規定,即用戶實體包含所有必需的字段等
我知道有API像django-rest-swagger和其他的自動記錄工具,也許有一些工具可以幫助聲明返回給用戶的數據具有與文檔中相同的簽名?
我使用Django REST Framework開發了一個RESTful API服務器,當應用程序成熟時,實體簽名有時會發生變化。是否有可能根據Django中的文檔測試REST API?
雖然寫這個程序的測試,我開始懷疑是否有工具來檢查API返回的數據作爲文件規定,即用戶實體包含所有必需的字段等
我知道有API像django-rest-swagger和其他的自動記錄工具,也許有一些工具可以幫助聲明返回給用戶的數據具有與文檔中相同的簽名?
爲什麼不用簡單的單元測試來測試它? 我假設你有你的API url正確映射到Django'u url_patterns。
然後,你可以簡單地單元Django的REST框架對其進行測試Test Cases
下面的代碼片段: 從rest_framework.test進口APITestCase
class InboxNotificationForPlayerViewTest(APITestCase):
def test_returns_delivered_inbox_notifications(self):
"""..."""
response = self.client.get(reverse(
'notifications-api:inbox-for-player', kwargs={'player_id': self.subscriber.player_id}
))
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertItemsEqual(response.data, {
'count': 3,
'not_read': 2,
'notifications': {
'read': [
inbox_payload(classic),
inbox_payload(without_window)
],
'not_read': [
inbox_payload(read)
]
}
})
我知道這可能是相當長的解決方案,但我相信它會在未來的發展中幫助你。請注意,響應數據格式的每次更改都將在每次測試啓動時進行跟蹤。
有專門的API文檔工具(即Swagger:http://swagger.io/)。你也可以谷歌「API合同」。
您可以使用DREDD根據API規範驗證您的服務器(http://dredd.readthedocs.io/en/latest/)。
獎金文章:https://blog.codeship.com/api-documentation-when-preferences-matter/
該解決方案並不能消除問題 - 文檔可以改變,並且測試將不會注意到。完整的規範必須存儲在某個地方,併成爲API測試的唯一真實來源 –