12

我一直在阅读有关在 django 中进行测试的信息。推荐的一件事是使用 django-webtest 进行功能测试。我在这里找到了一篇不错的文章,讲授如何使用 python 在 selenium 中进行功能测试。但人们也推荐了 Ian Bicking 的 WebTest 扩展djagno-webtest用于在 django 中测试表单。在 django 表单的上下文中,使用 webtest 进行测试和使用 selenium 进行测试有何不同?

所以从功能测试的角度来看:

django-webtest 和 selenium 如何并存?

我们需要同时拥有它们还是任何一个都可以?

4

2 回答 2

24

主要区别在于 selenium 运行一个实际的浏览器,而 WebTest 挂钩到 WSGI。这导致以下差异:

  • 你不能用 WebTest 测试 JS 代码,因为没有东西可以运行它。
  • WebTest 更快,因为它与 WSGI 挂钩,这也意味着更小的内存占用
  • WebTest 不需要在端口上实际运行服务器,因此并行化更容易一些
  • WebTest 不会检查实际浏览器出现的不同问题,例如特定浏览器版本错误(咳嗽.. Internet Explorer.. 咳嗽..)

底线: 首选使用 WebTest,除非您必须将 Selenium 用于无法使用 WebTest 进行测试的事物。

于 2012-09-23T12:18:18.833 回答
11

关于 Selenium 要了解的重要一点是,它主要构建为与服务器无关的测试框架。使用什么框架或服务器端实现来创建前端并不重要,只要它的行为符合预期即可。此外,虽然您可以(并且在可能的情况下应该)在 Selenium 中手动编写测试,但许多测试都是记录某人经历动作的宏,然后自动转换为代码。

另一方面,django-webtest 专门用于 Django 网站。它实际上是 Django 特定的 WebTest 扩展,它不是仅 Django,而是仅 WSGI(因此仅适用于 Python)。正因为如此,它可以与应用程序交互,对服务器上的事情如何工作有更高的认识。这可以使运行测试更快,还可以轻松编写更精细、更详细的测试。此外,与 Selenium 不同,您的测试不能自动编写为录制的宏。

否则,这两个工具通常具有相同的目的,并且旨在测试相同种类的事物。也就是说,我建议选择一个而不是同时使用两者。

于 2012-09-17T14:48:38.967 回答