django-webtest和selenium之间的区别

时间:2012-09-16 17:05:50

标签: python django selenium django-forms django-testing

我一直在读关于django的测试。推荐的一件事是使用django-webtest进行功能测试。我找到了一篇不错的文章here,它讲授如何使用python在selenium中进行功能测试。但人们也建议使用Ian Bicking的WebTest扩展djagno-webtest来测试django中的表单。在django形式的背景下,如何使用webtest进行测试并使用硒进行测试?

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

django-webtest和selenium是如何并排的?

我们是否需要同时拥有这两种产品?

2 个答案:

答案 0 :(得分:22)

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

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

底线: 首先使用WebTest,除非您必须将Selenium用于无法使用WebTest测试的内容。

答案 1 :(得分:9)

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

另一方面,django-webtest专门用于Django网站。它实际上是一个特定于Django的WebTest扩展,它不仅仅是Django,而是仅限WSGI(因此只支持Python)。因此,它可以与应用程序进行交互,更高层次地了解服务器上的工作方式。这可以使运行测试更快,并且还可以轻松编写更精细,更详细的测试。此外,与Selenium不同,您的测试不能自动写为录制的宏。

否则,这两个工具通常具有相同的目的,旨在测试相同类型的东西。也就是说,我建议选择一个而不是两个。