django - 如何为 Django 项目构建功能测试

标签 django testing functional-testing splinter

我想创建功能测试来覆盖我的 Django 项目。它是一个多页表单,每页都接受输入。先前页面上的输入会更改当前页面的内容/选项。测试目前使用 Splinter 和 PhantomJS 进行设置。我看到了两种主要的设置方法。

对于每个页面,使用存储的数据创建该页面的实例并将 Splinter 指向它。

好处

  • 允许对应用中的任何页面进行随机访问测试
  • 可以重用单元测试定义来填充这些合成页面

缺点

  • 需要设置 Splinter 可以指向的某种后端(此时我不知道这将如何工作,但这似乎很耗时)

构建测试以便按顺序完成,将第 1 页的测试内容传递到第 2 页

好处

  • 看起来它应该开箱即用

缺点

  • 不允许测试以任意顺序运行/一次只能运行一个
  • 可能需要更长的时间才能运行
  • 前面页面上的错误会影响后面的页面

我找到了许多关于如何进行小规模功能测试(单个页面/功能/等)的教程,但我想弄清楚是否有可接受的方法或最佳实践来构建它在一个大项目上。是其中之一吗?我还错过了什么?

最佳答案

我一直在寻找固定装置 ( https://docs.djangoproject.com/en/1.11/ref/django-admin/#django-admin-dumpdata )。如果您试图在整个项目的测试之间传递浏览器状态,事情就会变得太复杂。易于抓取数据库状态,易于加载。

关于django - 如何为 Django 项目构建功能测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47337108/

相关文章:

django - 使用 docker-compose 协作处理现有的 git repo Django 项目

python - django-admin 中的模型描述

php - Symfony2功能测试Unreachable字段 "_token"

django - 如何修改 Django 模块 South 的上次迁移?

c++ - 如何将 Django unicode 转换为 C++ std::string

java - response.jsonPath() 元素周围有方括号,如何检索字符串值?放心

gradle - Geb 功能测试如何用于性能/容量测试?

javascript - Selenium 功能测试结构和实践

Django登录测试session问题

haskell - 使用 Haskell 的 Quickcheck 检查传递性