簡體   English   中英

是否可以針對Django中的文檔測試REST API?

[英]Is it possible to test a REST API against documentation in Django?

我使用Django REST Framework開發了RESTful API服務器,並且隨着應用程序的成熟,實體簽名有時會發生變化。

在為此應用編寫測試時,我開始懷疑是否有工具可以按照文檔中所述檢查API是否返回數據,即用戶實體包含所有必填字段等。

我知道有django-rest-swagger之類的API自動文檔編制工具,也許還有一些工具可以幫助斷言返回給用戶的數據具有與文檔相同的簽名?

為什么不使用簡單的單元測試進行測試? 我假設您已將API網址正確映射到Django'u url_patterns。

然后,你可以簡單地單元Django的REST框架對其進行測試的測試用例

這是一個代碼段:從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/ )。 您也可以通過Google搜索“ API合同”。

您可以使用DREDD( http://dredd.readthedocs.io/en/latest/ )根據API規范驗證服務器。

獎勵文章: https : //blog.codeship.com/api-documentation-when-preferences-matter/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM