React 前端与 Django REST 后端的集成测试

Posted

技术标签:

【中文标题】React 前端与 Django REST 后端的集成测试【英文标题】:Integration testing of React front end with Django REST backend 【发布时间】:2017-09-24 00:50:35 【问题描述】:

有人知道如何使用 Django REST 后端对(React)前端进行集成测试。我能够使用 Nightwatch.js 和伪造的服务器 API 为前端编写功能测试。我还可以单独测试 Django REST API - Django 提供了一个 LiveServerTestCase,它可以为您启动一个带有测试数据库的测试服务器并在最后销毁它。我想知道是否有可能以某种方式使用/设置可以由前端调用的 Django 测试服务器(即 Nightwatch 测试)。 我对如何解决这个问题的其他想法持开放态度。

【问题讨论】:

您为什么不能使用相同的 Nightwatch.js 前端测试,而只需与实例化并配置为运行测试的 django 后端对话? 你说得对,这似乎是一个显而易见的解决方案。 【参考方案1】:

集成测试繁重的客户端 javascript 应用程序总是有点棘手。对于这种情况,我选择的工具是使用Capybara——一个很好的与网页交互的Ruby DSL——和javascript enabled driver。我已经成功使用了 webkitdriver 和 poltergeist。它们都是无头的,因此您可以在后台运行测试而不会打扰浏览器。 (硒的情况......)在某些情况下,我现在不记得两者都有问题。

由于您使用的是 Django,因此您可能想做testing in Python。我建议寻找对上述两个驱动程序之一的支持。 node.js 社区也可能对此有用。

【讨论】:

谢谢@froderik,我不了解 Capybara,一定会看看 :) 我的问题是对调用后端 REST API 的前端进行集成测试,该 API 在不同的服务器上运行.所以我来回决定是否应该在前端(即使用一些 JS 框架)或在后端使用 Django 工具进行集成测试。我很想看看其他人是如何做到这一点的。 我想说大多数人不关心在集成测试中包含他们的 JS 前端。他们认为维护需要太多时间。在我看来,这是你必须为持续稳定付出代价的时候。我会尝试测试 JS,如果由于某种原因它太不稳定或太难,那么我会退回到后端方法。另一个需要考虑的参数是不同部分的单元测试覆盖程度。

以上是关于React 前端与 Django REST 后端的集成测试的主要内容,如果未能解决你的问题,请参考以下文章

部署React前端和Django后端的3种方法

Django-Rest + React 前端:CORS 问题

Django Rest Framework 和 React 前端:如何防止未经授权的用户在获得图像 URL 的情况下查看私人图像?

如何在带有 Django Rest 框架的 React 前端使用 Django 用户组和权限

独立的 REST API 和独立的 React SPA 与 Django 和 React 的结合

如何使用 allauth 和 rest-auth 从 React 前端在 Django 中重新发送确认电子邮件