如何对 Django 视图进行单元测试?

2024-05-02

我想开始将单元测试集成到我的 Django 项目中,并且我发现对视图进行单元测试很棘手,因为 Django 使用函数实现视图的方式。

例如,如果函数有 URL,则每个函数都是 Django 中的视图/页面。

如何对 Django 视图进行单元测试?


我不确定测试视图有多么棘手。

你只需使用测试客户端 https://docs.djangoproject.com/en/dev/topics/testing/tools/#the-test-client.

代码覆盖率很容易。您可以推理 URL 请求如何映射到代码路径并发出适当的 URL 请求。

如果需要,您可以通过创建 Request 对象并检查 Response 对象来“手动”调用视图函数,但这工作量太大。

如果您对代码覆盖率有疑问,这是一件好事。这意味着您的代码无法轻松映射到 URL(这是用户在 Web 应用程序中所能看到的所有内容)。如果您的代码未映射到 URL,您可能应该 (a) 删除代码或 (b) 将其重构为单独的模块。

我们的视图函数之外还有很多模块。我们的视图函数导入这些模块。我们用普通的单元测试来测试这些“视图函数之外”的模块。


这是一个典型的结构。

some_big_product/
|-- __init__.py
|-- settings.py
|-- urls.py
|-- logging.ini
|-- other_global_files.py
|-- an_app_1/
|   |-- __init__.py
|   |-- urls.py
|   |-- models.py
|   |-- views.py
|   |-- tests.py <-- the generic Django testing 
|   |-- app_specific_module.py
|   |-- app_specific_package/
|   |   |-- __init__.py
|   |-- test_app_specific_module.py <-- unittest 
|   |-- test_app_specific_package.py
|-- generic_module.py
|-- generic_package/
|   |-- __init__.py
|-- tests/
|   |-- test_this.py
|   |-- test_that.py
|   |-- test_all.py <-- not always practical
|-- scripts/
    |-- run_tests.sh 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何对 Django 视图进行单元测试? 的相关文章

  • 元组有什么用?

    我现在正在学习 Python 课程 我们刚刚介绍了元组作为数据类型之一 我阅读了它的维基百科页面 但是 我无法弄清楚这种数据类型在实践中会有什么用处 我可以提供一些需要一组不可变数字的示例吗 也许是在 Python 中 这与列表有何不同 每
  • 如何用python脚本控制TP LINK路由器

    我想知道是否有一个工具可以让我连接到路由器并关闭它 然后从 python 脚本重新启动它 我知道如果我写 import os os system ssh l root 192 168 2 1 我可以通过 python 连接到我的路由器 但是
  • 如何使用 opencv.omnidir 模块对鱼眼图像进行去扭曲

    我正在尝试使用全向模块 http docs opencv org trunk db dd2 namespacecv 1 1omnidir html用于对鱼眼图像进行扭曲处理Python 我正在尝试适应这一点C 教程 http docs op
  • Python getstatusoutput 替换不返回完整输出

    我发现了这个很棒的替代品getstatusoutput Python 2 中的函数在 Unix 和 Windows 上同样有效 不过我觉得这个方法有问题output被构建 它只返回输出的最后一行 但我不明白为什么 任何帮助都是极好的 def
  • Django dumpdata 和 loaddata 不适用于多对多中介模型

    我在以下模型上将 dumpdata 与 Django 1 2 3 一起使用 class Bar models Model class Foo models Model bars models ManyToManyField Bar thro
  • Pandas 日期时间格式

    是否可以用零后缀表示 pd to datetime 似乎零被删除了 print pd to datetime 2000 07 26 14 21 00 00000 format Y m d H M S f 结果是 2000 07 26 14
  • YOLOv8获取预测边界框

    我想将 OpenCV 与 YOLOv8 集成ultralytics 所以我想从模型预测中获取边界框坐标 我该怎么做呢 from ultralytics import YOLO import cv2 model YOLO yolov8n pt
  • 在Python中连接反斜杠

    我是 python 新手 所以如果这听起来很简单 请原谅我 我想加入一些变量来生成一条路径 像这样 AAAABBBBCCCC 2 2014 04 2014 04 01 csv Id TypeOfMachine year month year
  • 从Python中的字典列表中查找特定值

    我的字典列表中有以下数据 data I versicolor 0 Sepal Length 7 9 I setosa 0 I virginica 1 I versicolor 0 I setosa 1 I virginica 0 Sepal
  • 如何在不丢失注释和格式的情况下更新 YAML 文件 / Python 中的 YAML 自动重构

    我想在 Python 中更新 YAML 文件值 而不丢失 Python 中的格式和注释 例如我想改造 YAML 文件 value 456 nice value to value 6 nice value 界面类似于 y yaml load
  • 在 Sphinx 文档中*仅*显示文档字符串?

    Sphinx有一个功能叫做automethod从方法的文档字符串中提取文档并将其嵌入到文档中 但它不仅嵌入了文档字符串 还嵌入了方法签名 名称 参数 我如何嵌入only文档字符串 不包括方法签名 ref http www sphinx do
  • 不同编程语言中的浮点数学

    我知道浮点数学充其量可能是丑陋的 但我想知道是否有人可以解释以下怪癖 在大多数编程语言中 我测试了 0 4 到 0 2 的加法会产生轻微的错误 而 0 4 0 1 0 1 则不会产生错误 两者计算不平等的原因是什么 在各自的编程语言中可以采
  • 如何使用原始 SQL 查询实现搜索功能

    我正在创建一个由 CS50 的网络系列指导的应用程序 这要求我仅使用原始 SQL 查询而不是 ORM 我正在尝试创建一个搜索功能 用户可以在其中查找存储在数据库中的书籍列表 我希望他们能够查询 书籍 表中的 ISBN 标题 作者列 目前 它
  • 如何在 Windows 命令行中使用参数运行 Python 脚本

    这是我的蟒蛇hello py script def hello a b print hello and that s your sum sum a b print sum import sys if name main hello sys
  • python import inside函数隐藏现有变量

    我在我正在处理的多子模块项目中遇到了一个奇怪的 UnboundLocalError 分配之前引用的局部变量 问题 并将其精简为这个片段 使用标准库中的日志记录模块 import logging def foo logging info fo
  • 将 Python 中的日期与日期时间进行比较

    所以我有一个日期列表 datetime date 2013 7 9 datetime date 2013 7 12 datetime date 2013 7 15 datetime date 2013 7 18 datetime date
  • 使用for循环时如何获取前一个元素? [复制]

    这个问题在这里已经有答案了 可能的重复 Python 循环内的上一个和下一个值 https stackoverflow com questions 1011938 python previous and next values inside
  • 模拟pytest中的异常终止

    我的多线程应用程序遇到了一个错误 主线程的任何异常终止 例如 未捕获的异常或某些信号 都会导致其他线程之一死锁 并阻止进程干净退出 我解决了这个问题 但我想添加一个测试来防止回归 但是 我不知道如何在 pytest 中模拟异常终止 如果我只
  • 在 JavaScript 函数的 Django 模板中转义字符串参数

    我有一个 JavaScript 函数 它返回一组对象 return Func id name 例如 我在传递包含引号的字符串时遇到问题 Dr Seuss ABC BOOk 是无效语法 I tried name safe 但无济于事 有什么解
  • cv2.VideoWriter:请求一个元组作为 Size 参数,然后拒绝它

    我正在使用 OpenCV 4 0 和 Python 3 7 创建延时视频 构造 VideoWriter 对象时 文档表示 Size 参数应该是一个元组 当我给它一个元组时 它拒绝它 当我尝试用其他东西替换它时 它不会接受它 因为它说参数不是

随机推荐

  • Visual Studio 2017 无法安装多个组件

    Visual Studio 2017 社区版发行版的安装程序因多个组件而失败 由于以下原因 产品无法安装列出的工作负载和组件 一个或多个包失败 工作负载不完整 使用 NET进行移动开发 Microsoft VisualStudio Work
  • C++:错误:限定名称的使用无效

    更新 我认为它已经修复了 多谢你们 我收到错误 但我无法弄清楚 我有这个代码 A Structure with one variable and a constructor struct Structure public int dataM
  • 设置背景时按钮变大 - 如何使其变小

    我想让我的按钮在设置背景之前缩小或恢复正常 我知道使用背景色调可以使用相同的背景颜色来解决此问题 但我的问题是我在背景上使用选择器 当选择器设置为按钮背景时 它变得更宽 当我将背景切换为背景色调时 颜色变得不同 例如对我来说是紫色 并且按下
  • 如何在 ActiveAdmin 中正确配置 Rails 4.1 枚举

    我有一个 Rails 4 1 应用程序 其中使用枚举来表示对象的隐私级别 在我的架构中 t integer privacy level default 0 在我的模型中 enum privacy level privacy private
  • 从 SQL 表在 SQL 中创建数据透视视图

    我有下表TEMP 我想使用 SQL 创建一个数据透视视图 排序依据CATEGORYASC 通过LEVEL降序和SETASC 并填写value 预期输出 我已尝试以下代码 但无法解决引发错误的聚合部分 SELECT FROM SELECT S
  • 自动化 Windows UI 测试方法

    我们正在寻求设置自动化 UI 测试 并想知道最好的方法是什么 潜在的陷阱是什么 设置费用是否昂贵 提前致谢 B 自动化测试最大的消耗可能是时间 有很多非常昂贵的工具 但也有免费的工具 即使是昂贵的工具的成本也不太可能与正确设置自动化测试所需
  • 如何处理Spring Boot中的SQLIntegrityConstraintViolationException?

    我正在 RestController 工作 尝试使用 try catch 块处理 SQLIntegrityConstraintViolationException 但我不知道为什么 catch 块从未执行 这是休息控制器 import ja
  • 使用 socket.io node.js 和传入消息的通知系统的架构实现和设计

    免责声明 我之前没有使用过node js 我以前没有使用过socket io 我正在考虑实现 Google Plus Facebook StackOverflow 风格的通知系统 我不是一个没有经验的开发人员 最终我会解决这个问题 但我只是
  • 增加android中的网格间距

    我有一个网格视图 其中三列中有很多项目 我想增加它们之间的间距 我怎样才能在安卓中做到这一点 您可以使用android verticalSpacing and android horizontalSpacing在 GridView 标记中并
  • Letrec 和可重入延续

    有人告诉我 以下表达式的计算结果为 0 但许多方案的实现将其计算为 1 let cont f letrec x call with current continuation lambda c set cont c 0 y call with
  • makefile 中的 $< 和 $@ 是什么意思?

    I have a csv b csv 在我的docs csv目录中 我需要将每个文件转换为 json 文件 我遵循这个question https stackoverflow com questions 2706064 compile al
  • 以与文件大小相同的格式获取类或对象的大小?

    如何从内存中最好地确定类的大小 这是一个可以使用的基本示例类 请注意 这些变量除了用于示例之外没有其他用途 type TMyClass class public fString1 string fString2 string fIntege
  • ReactJS Mapbox-gl 无效类型:“容器”必须是字符串或 HTMLElement

    我正在使用 ReactJS 和 Mapbox GL JS 构建一个小型应用程序 const MapRender gt const mapContainerRef useRef null const map new mapboxgl Map
  • Android 库模块使用 proguard

    我想创建一个安全的库模块 没有人可以从 apk 文件中提取代码 但是当尝试在库 gradle 中启用 proguard 时 出现错误包不存在 然后我在 proguard 规则文件中添加以下行 keep class com alprocr k
  • 升级到v1.5时jquery ajax出错

    我从 v1 4 4 升级到 v1 5 我想我已经发现了下面的问题 document ready function Get token on page load update csrf token 该函数看起来像这样 EDITED funct
  • Dynamics CRM:在帐户实体中添加多个地址

    I have a scenario where I need to add multiple Address to Account I am using Dynamics 365 online instance and my current
  • 使用 REST API 进行正确的会话管理

    我已经完成了 RESTful API 的设计 其中我使用作为参数发送的 API 令牌对每个请求进行身份验证 现在我想创建一个客户端界面 我想知道什么是管理每个客户端的会话的正确安全方法browser客户 我想过一个流程来保持服务器端无状态
  • 这是可插拔组件本地化的好解决方案吗?

    我问了一个question https stackoverflow com questions 1504363 how should i localise pluggable components以前只有一个答案 我现在已经花了一些时间来研
  • 比较元胞数组中的字符串

    我试图在单词列表中找到最常见的单词 到目前为止 这是我的代码 uniWords unique lower words for i 1 length words for j 1 length uniWords if uniWords j lo
  • 如何对 Django 视图进行单元测试?

    我想开始将单元测试集成到我的 Django 项目中 并且我发现对视图进行单元测试很棘手 因为 Django 使用函数实现视图的方式 例如 如果函数有 URL 则每个函数都是 Django 中的视图 页面 如何对 Django 视图进行单元测