Django:如何对更新视图/表单进行单元测试

2023-12-22

我正在尝试对我的更新表单和视图进行单元测试。我使用 Django Crispy Forms 来创建和更新表单。 UpdateForm 继承了 CreateForm 并对提交按钮文本做了一些小改动。 CreateView 和UpdateView 非常相似。它们具有相同的模型、模板和 success_url。它们的不同之处在于使用各自的形式,CreateView继承了django.views.generic.CreateView,UpdateView继承了django.views.generic.edit.UpdateView。

该网站运行良好。我可以毫无问题地创建和编辑对象。但是,我的第二个测试(如下所示)失败了。如何测试我的 UpdateForm?

任何帮助,将不胜感激。谢谢。

该测试通过:

class CreateFormTest(TestCase):

    def setUp(self):
        self.valid_data = {
            'x': 'foo',
            'y': 'bar',
        }

    def test_create_form_valid(self):
        """ Test CreateForm with valid data """
        form = CreateForm(data=self.valid_data)
        self.assertTrue(form.is_valid())
        obj = form.save()
        self.assertEqual(obj.x, self.valid_data['x'])

该测试失败:

class UpdateFormTest(TestCase):
    def setUp(self):
        self.obj = Factories.create_obj()  # Creates the object

    def test_update_form_valid(self):
        """ Test UpdateForm with valid data """
        valid_data = model_to_dict(self.obj)
        valid_data['x'] = 'new'
        form = UpdateForm(valid_data)
        self.assertTrue(form.is_valid())
        case = form.save()
        self.assertEqual(case.defendant, self.valid_data['defendant']

当预填充ModelForm对于已经创建的对象,您可以使用instance将对象传递给表单的关键字参数。

form = SomeForm(instance=my_obj)

这可以在测试中完成,例如在 OPsave()现有对象将被更新,而不是创建新对象。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django:如何对更新视图/表单进行单元测试 的相关文章

  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • django.db.utils.ProgrammingError:关系“django_content_type”不存在

    我有一个项目 我在我的电脑上慢慢建立起来 并且运行良好 我只是想将它放到服务器上 但收到此错误 django db utils ProgrammingError 关系 django content type 确实 不存在 我无法解决这个问题
  • 从字符串中删除识别的日期

    作为输入 我有几个包含不同格式日期的字符串 例如 彼得在16 45 我的生日是1990年7月8日 On 7 月 11 日星期六我会回家 I use dateutil parser parse识别字符串中的日期 在下一步中 我想从字符串中删除
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • 如何使用 Ansible playbook 中的 service_facts 模块检查服务是否存在且未安装在服务器中?

    我用过service facts检查服务是否正在运行并启用 在某些服务器中 未安装特定的软件包 现在 我如何知道这个特定的软件包没有安装在该特定的服务器上service facts module 在 Ansible 剧本中 它显示以下错误
  • Spark KMeans 无法处理大数据吗?

    KMeans 有几个参数training http spark apache org docs latest api python pyspark mllib html highlight kmeans pyspark mllib clus
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • AWS EMR Spark Python 日志记录

    我正在 AWS EMR 上运行一个非常简单的 Spark 作业 但似乎无法从我的脚本中获取任何日志输出 我尝试过打印到 stderr from pyspark import SparkContext import sys if name m
  • 从 Flask 访问 Heroku 变量

    我已经使用以下命令在 Heroku 配置中设置了数据库变量 heroku config add server xxx xxx xxx xxx heroku config add user userName heroku config add
  • Coffeescript + 单元测试:全局变量?

    我正在尝试使用 Jasmine 对用 CoffeeScript 编写的小型应用程序进行单元测试 我发现很多资料都说单元测试可以在从 CoffeeScript 编译的 JS 上完美地完成 如果所有内容都包装在匿名函数中以避免污染名称空间 如何
  • 无法在 Python 3 中导入 cProfile

    我试图将 cProfile 模块导入 Python 3 3 0 但出现以下错误 Traceback most recent call last File
  • Pandas:merge_asof() 对多行求和/不重复

    我正在处理两个数据集 每个数据集具有不同的关联日期 我想合并它们 但因为日期不完全匹配 我相信merge asof 是最好的方法 然而 有两件事发生merge asof 不理想的 数字重复 数字丢失 以下代码是一个示例 df a pd Da
  • Jupyter Notebook 内核一直很忙

    我已经安装了 anaconda 并且 python 在 Spyder IPython 等中工作正常 但是我无法运行 python 笔记本 内核被创建 它也连接 但它始终显示黑圈忙碌符号 防火墙或防病毒软件没有问题 我尝试过禁用两者 我也无法
  • Jquery一键提交多个同名表单

    我有动态创建的循环表单 我需要一键提交所有表单 我正在遵循下面的代码 你能建议我怎么做吗 谢谢
  • Nginx 与 Daphne 给出 502 Bad Gateway

    由于 Django Channels 和 uwsgi 出现问题 我决定用 daphne 替换 uwsgi 关注后this http masnun rocks 2016 11 02 deploying django channels usin
  • 类型错误:预期单个张量时的张量列表 - 将 const 与 tf.random_normal 一起使用时

    我有以下 TensorFlow 代码 tf constant tf random normal time step batch size 1 1 我正进入 状态TypeError List of Tensors when single Te
  • Conda SafetyError:文件大小不正确

    使用创建 Conda 环境时conda create n env name python 3 6 我收到以下警告 Preparing transaction done Verifying transaction SafetyError Th
  • Python:如何将列表列表的元素转换为无向图?

    我有一个程序 可以检索 PubMed 出版物列表 并希望构建一个共同作者图 这意味着对于每篇文章 我想将每个作者 如果尚未存在 添加为顶点 并添加无向边 或增加每个合著者之间的权重 我设法编写了第一个程序 该程序检索每个出版物的作者列表 并
  • Rocket UniData/UniVerse:ODBC 无法分配足够的内存

    每当我尝试使用pyodbc连接到 Rocket UniData UniVerse 数据时我不断遇到错误 pyodbc Error 00000 00000 Rocket U2 U2ODBC 0302810 Unable to allocate

随机推荐

  • 在Android中将电话号码格式化为E164格式

    我想将设备中联系人的每个电话号码转换为 E 164 格式 所以 我在下面使用了开源 库电话号码 https github com googlei18n 所以我像这里一样使用它 Phonenumber PhoneNumber formatte
  • linspace 相对于冒号“:”运算符的优点是什么?

    写作有什么好处吗 t linspace 0 20 21 over t 0 1 20 我知道前者产生一个向量 就像第一个一样 谁能告诉我一些情况linspace有用过t 0 1 20 这不仅仅是可用性 尽管文档说 The linspace函数
  • MS Word、OpenXML、PageSetup、方向和 4 方向边距

    我用 OpenXML 制作了这个文档 我正在学习 OpenXML 哦 太难了 MainDocumentPart m wd AddMainDocumentPart m Document new Document Body b1 new Bod
  • 在页面加载时在 CSS 中触发没有 javascript 的转换

    我想通过 CSS 过渡来增加栏的宽度 但不喜欢通过悬停事件触发它 例如http jsfiddle net TFHn9 http jsfiddle net TFHn9 我只是想要一个即时动画 当页面加载时 当然不需要Javascript 有机
  • 如何编译/安装node.js(无法配置cxx编译器!)(Ubuntu)。

    如何在 Ubuntu 上编译 安装 Node js 它失败并出现以下错误cxx compiler 单线安装所有需要的依赖项 curl 和 git 并不是真正需要的 但非常有用 如果通过 nvm 安装也需要 sudo apt get inst
  • 如何在 JavaScript 中实现锁

    怎么可能相当于lock在 C 中可以用 JavaScript 实现吗 因此 为了解释我的想法 一个简单的用例是 用户点击按钮B B引发 onclick 事件 如果B is in event state该事件正在等待B将在ready stat
  • Android中如何获取真实的设备型号?

    例如 在我的 Xperia mini 手机上 建造模型 http developer android com reference android os Build html MODEL回报 st15i 建造 制造商 http develop
  • 何时在 OpenGL 中使用 glBufferData

    我刚刚开始学习 C 中的顶点缓冲区对象 我正在读一本关于 OpenGL 的书 书中说 VBO 渲染比其他形式的渲染更高效 因为数据存储在 GPU 上而不是堆上 但是 我很困惑如果您仍然需要将数据数组从堆加载到 GPU 这会是怎么回事 每隔几
  • 恢复后重新安装自制符号链接

    重新安装后 我从时间机器恢复了运行 10 9 的 Mac 但似乎下面的符号链接 usr local bin因为有些公式已经丢失了 公式依然按照安装brew list formula但没有来自的链接 usr local bin e g usr
  • 如何在 ios 中保存、检索、删除和更新 Plist 文件中的数据?

    我正在创建一个 iPhone 应用程序 在其中我可以获取所有国家 地区名称 徽标和玩家名称 我想将该数据保存在 plist代替sqlite服务器 我不知道如何创建 plist 文件DocumentDirectory并保存数据 请有人建议我如
  • javascript select2 允许的标签

    我需要允许用户在选择中仅选择允许的标签 目前我有 input id txtcolor select2 tags red green blue 你能帮我吗 从 3 3 开始 您可以在使用始终返回 null 的标签时指定自己的 createSe
  • 设置浏览器时区(超过四个字母)[重复]

    这个问题在这里已经有答案了 SET TZ AEST 9 c Program Files x86 Mozilla Firefox firefox exe 测试针对 https whoer net https whoer net 请注意它如何显
  • C++ 中的 POD 类型是什么? [复制]

    这个问题在这里已经有答案了 我曾多次遇到过 POD 型 这个术语 这是什么意思 POD代表普通旧数据 即一个类 是否使用关键字定义struct或关键字class 没有构造函数 析构函数和虚拟成员函数 维基百科关于 POD 的文章 http
  • 带有 AdMob 的 Google Play 服务。检查可用性?

    我正在从 AdMob SDK 迁移到 Google Play 服务 我已经完成了大部分工作 并且一切似乎都运行良好 但我不确定我是否理解某些交互背后的逻辑 我所做的更改可以在这里找到 Google Play 服务迁移 https devel
  • 如何找到最近的事件元素

    我正在使用 jQuery 我想找到最近的班级 hidebox到创建事件的元素 我尝试使用parent find and closest但它们都指的是我的元素所在的级别 我只是寻找最近的 hidebox我可以找到我的事件元素的类 tr td
  • 如何使用 Notepad++ 正则表达式搜索来匹配 HTML 属性?

    这是我的文字 span class c1 Testing this string span 我想以这样的方式结束 span Testing this string span 所以我尝试在 Notepad 中使用这个正则表达式来替换任何内容
  • mv 等效 rsync 命令 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我正在尝试将文件夹移动到另一个文件夹使用命令行 如果已经存在则覆盖 但在使用 mv 时出现错误 是目录 example mv src test des
  • 标识符指的是组件的私有成员

    html
  • TCP 连接的可靠性如何?

    我已经编写了服务器 客户端应用程序 服务器是用c 编写的 客户端代码是使用java编写的 通信协议是TCP 使用 tcp 传输文件时 可能会发送丢失的数据 换句话说 tcp 是否保证数据正确到达 我是否应该发送该文件的标头信息以检查错误 例
  • Django:如何对更新视图/表单进行单元测试

    我正在尝试对我的更新表单和视图进行单元测试 我使用 Django Crispy Forms 来创建和更新表单 UpdateForm 继承了 CreateForm 并对提交按钮文本做了一些小改动 CreateView 和UpdateView