单元测试通过 Django 中模型的正则表达式验证器

2024-03-26

我为 models.py 中的一些字段定义了模型以及正则表达式验证器。在tests.py中,我编写了测试来验证这些验证器,但它们却通过了。尽管当我尝试通过视图输入错误的值时验证器会发出警报,并且我的 forms.py 中没有该表单的任何“干净”功能

Model:

class Organization(models.Model):
    name = models.CharField(
                    max_length=128,
                    unique=True,
                    validators=[
                            RegexValidator(
                                    r'^[(A-Z)|(a-z)|(\s)]+$',
                            )   
                    ]   
            )   
    def __unicode__(self):
            return self.name

Tests:

class TestOrganization(TestCase):
    def setUp(self):
            Organization.objects.create(
                    name='XYZ123',
                    location='ABC'
            )   

    def test_insertion(self):
            self.assertEqual(1,len(Organization.objects.filter(name='XYZ123')))

该测试实际上根据验证器规则创建了一个组织对象,并且 test_insertion 实际上通过了,但事实不应该是这样,并且应该在 setUp 本身中引发异常。


保存对象不验证。您需要使用手动执行此操作Model.full_clean https://docs.djangoproject.com/en/dev/ref/models/instances/#django.db.models.Model.full_clean method.

from django.core.exceptions import ValidationError

class TestOrganization(TestCase):
    def test_validation(self):
        org = Organization(name='XYZ123')
        with self.assertRaises(ValidationError):
            # `full_clean` will raise a ValidationError
            #   if any fields fail validation
            if org.full_clean():
                org.save()

        self.assertEqual(Organization.objects.filter(name='XYZ123').count(), 0)

See 验证对象 - 模型实例参考 | Django 文档 |姜戈 https://docs.djangoproject.com/en/dev/ref/models/instances/#validating-objects

顺便说一句,你的模型没有location场地。我相应地稍微修改了模型实例创建部分。

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

单元测试通过 Django 中模型的正则表达式验证器 的相关文章

随机推荐

  • Ajax 追加加载

    它必须是jquery 我有文件 text html 其中有 6 个 div a b c d e f 在另一个文件中 我有一个 div 我喜欢它将 a b c d e f 的内容填充到该单个 div 中 我尝试过 load 但 b 替换了 a
  • ImageMagick - “未找到 CORE_RL_magick_.dll”或如何使用 ruby​​ 1.9.2 在 Windows 上安装 RMagick

    我正在开发 Rail3 应用程序 经过几个小时的努力 终于在 win7x64 ruby 1 9 2 上安装了 rmagick 2 13 1 gem 没有错误 我遇到了另一个错误 是的 我听说 Windows 中的 Rails 体验可能会很痛
  • 按一天中的时间自动切换 Windows 10 中的暗/亮模式(无需修改或更改主题!)

    如今大多数设备都允许自动切换暗 亮模式 但 Windows 10 似乎没有这样的功能 有办法做到这一点吗 例如使用任务计划程序 似乎有很多关于如何以编程方式更改窗口 主题 的示例 但没有关于亮 暗模式切换的示例 可以在 设置 颜色 中为 W
  • jQuery 圆函数

    如何使用 jQuery 对数字进行四舍五入 如果数字是 3168 我想将其打印为 32 或者 如果数字为 5233 则结果应为 52 我怎样才能做到这一点 我应该使用Math round功能 是的 您应该使用 Math round 除以 1
  • 并发数据结构设计

    我正在尝试提出用于高吞吐量 C 服务器的最佳数据结构 该数据结构将用于存储从几到几百万个对象的任何内容 并且不需要排序 尽管可以非常便宜地提供唯一的排序键 要求是它能够支持高效的插入 最好是 O 1 中等效率的删除和高效的遍历 它不需要支持
  • 如何测试事件是否包含事件处理程序?

    我想测试那个班级A s RegisterEventHandlers 方法将其方法之一注册为EventHandler课堂活动B 我怎样才能做到这一点 我正在使用最小起订量 如果这很重要的话 我认为没有办法从类外部检查事件处理程序委托 如果我错
  • 在文本区域上启用垂直滚动

    我有一个文本区域 我想启用垂直滚动 当我超过文本区域的高度时 它的大小会增加 滚动条不出现 我希望出现一个垂直滚动条 并且用户也无法调整文本区域的大小 我在网上搜索并尝试发布的解决方案 但似乎没有一个有效 Demo http jsfiddl
  • Scala 中使用 TypeTag 和 ClassTag 的多态实例化

    在 Scala 2 9 中 可以将多态实例化实现为 def newInstance T implicit m Manifest T m erasure newInstance asInstanceOf T 但从2 10开始Manifest正
  • 无需硬件支持的虚拟内存

    在读的时候this https stackoverflow com questions 11809162问题及其答案我忍不住想为什么硬件必须支持虚拟内存 例如 我不能仅用软件模拟这种行为 例如 操作系统将所有内存表示为某个表 拦截所有与内存
  • 使用托管服务身份支持代表流程

    在 Azure 和应用服务中运行的应用程序的一个非常常见的流程是代表流程 其中应用程序可以交换传入的访问令牌及其 ClientId ClientSecret 以作为用户访问另一个资源 查看 MSI API 上当前有限的文档 我只看到获取访问
  • Spring MVC 更新后不会显示正确的数据库值

    在我的控制器中 输入一个值MySQL数据库成ModelAndView object 有一个单独的程序可以更新表和MVC应该获取该值 因此没有表单可以更新该表 当 的时候表已更新 当我在浏览器上点击刷新 值不会在页面上更新 控制器 Suppr
  • 如何在 travis 上启动和停止后台任务?

    我需要在 travis 上启动并重新启动自定义 Web 服务器 使用子 shell 在后台启动就可以了 travis yml if TEST ADAPTER HTTP then vendor bin httpd php start fi 为
  • Phoenix框架中如何处理关联和嵌套表单?

    Phoenix框架中如何处理关联和嵌套表单 如何创建具有嵌套属性的表单 在控制器和模型中如何处理它 有一个处理 1 1 情况的简单示例 想象一下我们有一个Car and an Engine模型和显然Car有一个Engine 所以有汽车型号的
  • 简单的随机英语句子生成器[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要一个简单的随机英语句子生成器 我需要用我自己的单词填充它 但它需要能够制作至少遵循英语规则的较长句
  • 警告:“将‘D’的乘法及其转置括起来,以确保结果是埃尔米特式的。”

    正如您在上面的屏幕截图中看到的 我的 Matlab m 文件代码中有以下表达式 K P D D P 其中 P 是一个 nxn 矩阵 D 是一个 nx1 列向量 n 4 如果重要的话 为什么我会收到此警告消息 如果我在那里使用或不使用括号会发
  • SCTP 与多宿主作为 TCP 的直接替代品

    SCTP具有本机多宿主支持 如果我理解正确的话 如果主接口出现故障 它将自动通过辅助 NIC 重新路由您的数据包 我通过编写一个自定义路由守护程序来使用 TCP 复制此功能 以便在我的主 NIC 出现故障时修改路由表 我想尝试使用SCTP反
  • 如何隐藏 toast 消息“您的音频将发送到谷歌以提供语音识别服务。”在安卓中?

    我正在使用谷歌语音识别器在 Android 中集成语音服务 但是当按下麦克风按钮时 会显示这条烦人的 toast 消息 请建议我一种隐藏此 toast 消息的方法 这是我的java代码 public class FormActivity e
  • 如何合并对象数组中的重复项并对特定属性求和? [复制]

    这个问题在这里已经有答案了 我有这个对象数组 var arr name John contributions 2 name Mary contributions 4 name John contributions 1 name Mary c
  • PyQt 中同一模型的不同视图

    我有一个关于 PyQt 中特定模型的多个视图的问题 目前 我有一个 TreeView 设置来显示继承自 StandardItemModel 的模型 模型中存在三种类型的 StandardItem Alpha Beta Gamma 它们在 T
  • 单元测试通过 Django 中模型的正则表达式验证器

    我为 models py 中的一些字段定义了模型以及正则表达式验证器 在tests py中 我编写了测试来验证这些验证器 但它们却通过了 尽管当我尝试通过视图输入错误的值时验证器会发出警报 并且我的 forms py 中没有该表单的任何 干