django-webtest 和 selenium 的区别

Posted

技术标签:

【中文标题】django-webtest 和 selenium 的区别【英文标题】:Difference between django-webtest and selenium 【发布时间】:2012-09-09 01:21:26 【问题描述】:

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

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

django-webtest 和 selenium 如何并行?

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

以上是关于django-webtest 和 selenium 的区别的主要内容,如果未能解决你的问题,请参考以下文章

Selenium学习Selenium 总结

selenium ide和selenium python的区别

Selenium02篇python+selenium实现Web自动化:鼠标操作和键盘操作!

Maven 存储库中的 Selenium Maven 工件 selenium-api 和 selenium-support 有啥区别?

Cypress和Selenium

使用 selenium TestNG 和 selenium 进行并行测试