为什么这个 Django 测试能够通过?

2024-01-07

单独调用send_mail函数会因为主题中的换行符而导致BadHeaderError异常。

我预计这个 test_newline_causes_exception 也会失败,但事实并非如此。这是 Django 1.3 中的内容。有任何想法吗?

from django.core.mail import send_mail
from django.utils import unittest

class EmailTestCase(unittest.TestCase):

    def test_newline_causes_exception(self):
        send_mail('Header\nInjection', 'Here is the message.', '[email protected] /cdn-cgi/l/email-protection',
                  ['[email protected] /cdn-cgi/l/email-protection'], fail_silently=False)

EDIT:这个新测试表明,在测试中使用 send_mail 时,不会调用标头检查代码 (django.core.mail.message.forbid_multi_line_headers)。

from django.core.mail import send_mail, BadHeaderError, outbox
from django.utils import unittest

class EmailTestCase(unittest.TestCase):

    def test_newline_in_subject_should_raise_exception(self):

        try:
            send_mail('Subject\nhere', 'Here is the message.',
                      '[email protected] /cdn-cgi/l/email-protection', ['[email protected] /cdn-cgi/l/email-protection'], fail_silently=False)
        except BadHeaderError:
            raise Exception

        self.assertEqual(len(outbox), 1)

        self.assertEqual(outbox[0].subject, 'Subject here')

Result:

AssertionError: 'Subject\nhere' != 'Subject here'

你并没有真正测试任何东西。测试意味着检查是否BadHeaderError是否已被提出。如果断言测试为假,则测试将失败。你可以做这样的事情 -

def test_newline_causes_exception(self)
    error_occured = False
    try:
        send_mail('Header\nInjection', 'Here is the message.', '[email protected] /cdn-cgi/l/email-protection',
                  ['[email protected] /cdn-cgi/l/email-protection'], fail_silently=False)
    except BadHeaderError:
        error_occured = True

    self.assertTrue(error_ocurred)

我还没有测试过。但它应该有效。

PS: from django.core.mail import send_mail, BadHeaderError

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

为什么这个 Django 测试能够通过? 的相关文章

随机推荐

  • ListFragment onItemClickListener 不起作用

    我正在使用选项卡式布局 带有滑动 这里我有 3 个由SectionsPagerAdapter 控制的选项卡 每个选项卡都是一个 ListFragment 现在我想在单击列表中的一项时触发一个事件 我想要每个选项卡都有一个监听器 现在是代码
  • 使用 fgets 从文件中读取

    我正在读取格式的文件 1 32 43 23 32 43 123 43 54 243 123 2222 2 这是我的代码片段 string 100 while feof fp fgets string 100 fp 现在 当我将每个字符串放入
  • Django 使用 kwargs 进行反向操作

    比如说 在我的注册类的 post 方法中 如果用户已经注册 我想将用户重定向到登录页面 这很简单 class Register View def post self request Some code to check if the ema
  • XTS 的日期有不同的来源。使用 R 计算 beta

    我对 R 有点陌生 我想我的错误对于有经验的人来说是微不足道的 我正在尝试编写一个 R 程序来计算许多股票的贝塔值 股票代码读取自Input csv 数据是从yahoo下载的 然后 代码循环执行每只股票的 beta 计算 并输出总结回归的
  • UITextView 带有“完成”按钮*和*“返回”键?

    我在 iPhone 应用程序中使用 UITextView 进行多行文本输入 并且已将 返回 键设置为显示 完成 我还设置了返回键来禁用第一响应者状态 以便点击 完成 实际上退出 UITextView 但是 我还希望用户能够在 UITextV
  • 如何编写在框中绘制文本/字符串的测试用例?

    我正在矩形框架中绘制字符串 绳子拉得很完美 现在我需要使用sentesting 套件编写测试用例 我不知道应该从哪里开始 为了寻求帮助 我还看到了iPhone 示例计算器应用程序 http developer apple com IPhon
  • 未找到视图或其主视图,或者没有视图引擎支持搜索的位置

    错误如下 未找到视图 LoginRegister 或其主视图 或者没有视图引擎支持搜索的位置 搜索了以下位置 视图 MyAccount LoginRegister aspx 视图 MyAccount LoginRegister ascx 视
  • 当在 gnu 屏幕中使用 vim 或 less 时,退出 vim 或 less 会留下挥之不去的印记

    在我的新 Ubuntu 系统上 我启动一个屏幕会话并在 vim 中编辑文件或在 less 中查看它 退出后 屏幕不会自行重绘 而只是向上滚动以在我刚刚在 vim 或更少中查看的所有内容下显示命令行 我怎样才能改变这个 以便退出 vim 会让
  • jQuery:如何在两个闭合的 html 标签之间选择文本

    我正在尝试使用 jQuery 将介绍 帮助文本包装在 html 文档中 它不在任何标签内 而是在两个闭合的 html 标签之间 例如 请参阅随附的代码片段 第二个结束标签也可以是除 p var txtHelp jQuery b page t
  • Django 缓存错误..即使禁用缓存

    我有一个 Django 网站 其中出现了一个奇怪的错误 在网站上 他们可以添加 出版物 这基本上与不同名称的博客文章相同 当他们修改现有帖子时 事情会变得很奇怪 他们首先在管理员中修改它 当他们访问网站时 更改不可见 就像旧版本被缓存一样
  • 是否可以隐藏系统栏

    我创建了一个启动器 以便在内部应用程序中使用它 出于某些安全原因 我想隐藏系统栏 对参数的访问和对已安装应用程序的访问的排序 但我不知道该怎么做 将使用的平板电脑未root 你能帮我吗 您无法隐藏它 但可以禁用它 但主页除外 为此 您可以将
  • R 中的网页抓取,“...当前工作目录中不存在”错误

    我正在尝试使用 XML2 包从 ESPN com 中抓取一些表格 举例来说 我想将第 7 周的梦幻四分卫排名抓取到 R 中 其 URL 为 http www espn com fantasy football story page 16ra
  • 如果我推送到已删除的分支会发生什么?

    我有一个 git 分支 被gitlab合并删除了 现在 发现了一个错误 我想继续在这个分支上工作 我重命名了它 但它仍然跟踪已删除的分支 它不知道 gitlab 删除了该分支 现在我很好奇 在这种情况下我该怎么办 如果我按原样推进会发生什么
  • 在Java中编码base64并在C#中解码

    我必须将文件发送到我的 Web 服务 但 Web 服务假定该文件 字节数组 为 base64Binary 在编码之前 byteArrayFile 作为常规文件保存在磁盘上 我这样做只是为了测试 因此 在我的 Web 服务 Java 客户端中
  • Bootstrap 中每行超过 12 列

    我将在 bootstrap 3 2 0 中查看每行 12 列 并根据 bootstrap 和这个帖子 https stackoverflow com questions 23535499 bootstrap what will happen
  • 在 HTML 页面“到达”底部之前滚动它

    我有这个聊天话题 它当前所做的是 当它到达页面底部时 它会向上滚动 以便它始终位于页面底部 问题是 正如您在图像中看到的 它在到达页面底部之前隐藏在表单后面 因此 我需要重新定义页面底部的内容 我努力了 function scroll wi
  • scoped_session 中跨进程边界

    我正在使用 SQLAlchemy 和多处理 我还使用scoped session 因为它避免共享同一个会话 但我发现了一个错误及其解决方案 但我不明白为什么会发生这种情况 你可以在下面看到我的代码 db py engine create e
  • 使用 jira-python 进行基本身份验证

    我是 Python 新手 jira python 库新手 网络编程新手 尽管我在应用程序和集成编程以及数据库查询方面确实有相当多的经验 尽管已经有一段时间了 使用Python 2 7和请求1 0 3 我正在尝试使用这个库 http jira
  • 如何动态设置文本到TextView?

    我想在活动开始时显示连接的 ssid 和 IP 地址 它包含一个图像视图 用于标题 因为我没有使用操作栏 和 4 个文本视图 ssid 标签 ssid 值 ipaddr 标签和 ipaddr 值 我已经测试了获取 ssid 和 ipaddr
  • 为什么这个 Django 测试能够通过?

    单独调用send mail函数会因为主题中的换行符而导致BadHeaderError异常 我预计这个 test newline causes exception 也会失败 但事实并非如此 这是 Django 1 3 中的内容 有任何想法吗