是否可以针对Django中的文档测试REST API?

时间:2016-09-25 10:45:44

标签: python django rest testing

我使用Django REST Framework开发RESTful API服务器,当应用程序成熟时,实体签名有时会发生变化。

在为这个应用程序编写测试时,我开始怀疑是否有工具可以检查API返回文档中所述的数据,即用户实体包含所有必需的字段等。

我知道有django-rest-swagger等API自动记录工具,也许有一些工具可以帮助断言返回给用户的数据与文档中的签名相同?

2 个答案:

答案 0 :(得分:0)

为什么不用简单的单元测试来测试它? 我假设您已将API网址正确映射到Django'u url_patterns。

然后您可以使用Django REST Framework 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)
                ]
            }
        })

我知道这可能是一个很长的解决方案,但我相信它会在未来的发展中帮助你。请注意,每次测试启动都会跟踪响应数据格式的每个更改。

答案 1 :(得分:0)

有专门的API文档工具(即Swagger:http://swagger.io/)。您还可以谷歌进行" API签约"。

您可以使用DREDD(http://dredd.readthedocs.io/en/latest/)根据API规范验证服务器。

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