Mock() 函数在 django2 中给出 TypeError

2023-12-19

我正在跟进本教程 https://www.obeythetestinggoat.com/book/chapter_purist_unit_tests.html.

当我跑步时test_views.py根据作者的说法,我有一个不应该出现的错误:TypeError: quote_from_bytes() expected bytes.

My views and my test_views与书本相同,但我使用 django 2.0.6 而不是 django 1.11,所以我的url.py改变,所以也许这就是问题所在。

Edit:

再一看,问题似乎出在mock()功能。

当我使用patch('lists.views.List') the Print(list_)在我看来给出<MagicMock name='List()' id='79765800'>代替List object (1)

/edit

My lists/urls.py:

urlpatterns = [
    path('new', views.new_list, name='new_list'),
    path('<slug:list_id>/',
        views.view_list, name='view_list'),
    path('users/<email>/',         # I'm not sure about this one but it works in other tests
        views.my_lists, name='my_lists'),
]
#instead of:
#urlpatterns = [
#    url(r'^new$', views.new_list, name='new_list'),
#    url(r'^(\d+)/$', views.view_list, name='view_list'),
#    url(r'^users/(.+)/$', views.my_lists, name='my_lists'),
#]

My lists/views.py:

[...]
def new_list(request):
    form = ItemForm(data=request.POST)
    if form.is_valid():
        list_ = List()
        list_.owner = request.user
        list_.save()
        form.save(for_list=list_)
        Print(list_)
        return redirect(list_)
    else:
        return render(request, 'home.html', {"form": form})

My lists/tests/test_views.py:

@patch('lists.views.List')
@patch('lists.views.ItemForm')
def test_list_owner_is_saved_if_user_is_authenticated(self, 
    mockItemFormClass, mockListClass
):
    user = User.objects.create(email='[email protected] /cdn-cgi/l/email-protection')
    self.client.force_login(user)
    self.client.post('/lists/new', data={'text': 'new item'})
    mock_list = mockListClass.return_value
    self.assertEqual(mock_list.owner, user)

我的完整回溯:

类型错误:quote_from_bytes() 预期字节

可以是什么?

谢谢


最后我在网上找到了解决方案。

Django 2 不再支持字节串 https://docs.djangoproject.com/en/2.0/releases/2.0/#removed-support-for-bytestrings-in-some-places在某些地方,因此当视图重定向模拟类列表时,它会作为模拟对象并且iri_to_uridjango 函数抛出错误。在 Django 1.11 中iri_to_uri将 iri 强​​制为字节return quote(force_bytes(iri), safe="/#%[]=:;$&()+,!?*@'~")现在是return quote(iri, safe="/#%[]=:;$&()+,!?*@'~")。所以解决办法是return redirect(str(list_.get_absolute_url()))代替return redirect(list_) in the lists.views.py

def new_list(request):
    form = ItemForm(data=request.POST)
    if form.is_valid():
        list_ = List()
        list_.owner = request.user
        list_.save()
        form.save(for_list=list_)
        #return redirect(list_)
        return redirect(str(list_.get_absolute_url()))
    else:
        return render(request, 'home.html', {"form": form})

我希望这对其他人有帮助

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

Mock() 函数在 django2 中给出 TypeError 的相关文章

  • 将 Matplotlib 误差线放置在不位于条形中心的位置

    我正在 Matplotlib 中生成带有错误栏的堆积条形图 不幸的是 某些层相对较小且数据多样 因此多个层的错误条可能重叠 从而使它们难以或无法读取 Example 有没有办法设置每个误差条的位置 即沿 x 轴移动它 以便重叠的线显示在彼此
  • 何时使用模拟框架?

    因此 我正在使用模拟框架 Moq 进行单元测试 并且想知道何时应该使用模拟框架 以下两个测试之间的优点 缺点是什么 public class Tests Fact public void TestWithMock Arrange var r
  • 通过最小元素比较对 5 个元素进行排序

    我必须在 python 中使用元素之间的最小比较次数来建模对 5 个元素的列表进行排序的执行计划 除此之外 复杂性是无关紧要的 结果是一个对的列表 表示在另一时间对列表进行排序所需的比较 我知道有一种算法可以通过 7 次比较 总是在元素之间
  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • 如何使用 Ansible playbook 中的 service_facts 模块检查服务是否存在且未安装在服务器中?

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

    假设我有这样的数据框 col1 col2 col3 col4 0 A A 1 pass 2 1 A A 2 pass 4 2 A A 1 fail 4 3 A A 1 fail 5 4 A A 1 pass 3 5 A A 2 fail 2
  • Python pickle:腌制对象不等于源对象

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

    我正在尝试创建一个函数 它将绘制我告诉它的任何公式 import numpy as np import matplotlib pyplot as plt def graph formula x range x np array x rang
  • 如何在Python中获取葡萄牙语字符?

    我正在研究葡萄牙语 角色看起来很奇怪 我怎样才能解决这个问题 代码 import feedparser import random Vou definir os feeds feeds conf feedurl http pplware s
  • 如何在ipywidget按钮中显示全文?

    我正在创建一个ipywidget带有一些文本的按钮 但按钮中未显示全文 我使用的代码如下 import ipywidgets as widgets from IPython display import display button wid
  • 无法在 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 笔记本 内核被创建 它也连接 但它始终显示黑圈忙碌符号 防火墙或防病毒软件没有问题 我尝试过禁用两者 我也无法
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • Fabric env.roledefs 未按预期运行

    On the 面料网站 http docs fabfile org en 1 10 usage execution html 给出这个例子 from fabric api import env env roledefs web hosts
  • 向 Altair 图表添加背景实心填充

    I like Altair a lot for making graphs in Python As a tribute I wanted to regenerate the Economist graph s in Mistakes we
  • 对年龄列进行分组/分类

    我有一个数据框说df有一个柱子 Ages gt gt gt df Age 0 22 1 38 2 26 3 35 4 35 5 1 6 54 我想对这个年龄段进行分组并创建一个像这样的新专栏 If age gt 0 age lt 2 the
  • 如何在 Python 中追加到 JSON 文件?

    我有一个 JSON 文件 其中包含 67790 1 kwh 319 4 现在我创建一个字典a dict我需要将其附加到 JSON 文件中 我尝试了这段代码 with open DATA FILENAME a as f json obj js
  • 类型错误:预期单个张量时的张量列表 - 将 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

随机推荐

  • OpenCL 中的障碍

    在 OpenCL 中 我的理解是你可以使用barrier 同步工作组中线程的函数 我 通常 确实了解它们的用途以及何时使用它们 我还知道工作组中的所有线程都必须遇到障碍 否则会出现问题 然而 到目前为止 每次我尝试使用屏障时 似乎都会导致我
  • Highcharts:维恩图如何显示总数和并集数?

    I am using highchart js to generate reports I need to generate venn diagram like the below image 在 的帮助下this post https s
  • 基于 PHP/JavaScript 的安全、可定制、开源聊天引擎,适用于所有流行的浏览器

    请推荐适用于所有流行浏览器的 PHP JavaScript 上的安全 可定制 开源聊天 我自己写的聊天记录
  • 让express.js显示公共文件夹

    我最近使用express js构建了一个快速的单页应用程序 这实际上是我的第一个js框架 实际上 我的第一个js项目 所以我对此非常陌生 我订阅了新的typography com 云字体 但无法找到放置在公共文件夹中的 fonts 文件夹
  • 如何检查Windows文件是否可读/可写?

    首先 我知道这对于实际检查我是否可以写作并不可靠 我正在编写一个文件传输客户端 并且希望 远程 和 本地 文件浏览器窗格之间具有相同的功能 我完全理解 无论如何 我都必须处理执行的任何操作的任何与权限相关的异常 这不是编程检查 只是显示给用
  • 将 TryDequeue 放入 while 循环中安全吗?

    我以前没有使用过并发队列 在 while 循环中使用 TryDequeue 是否可以 难道这事就不能永远陷下去了吗 var cq new ConcurrentQueue
  • 如何在 XML 中创建新行或制表符?

    In my strings xml文件 我有一个很长的文本 我想要格式化 如何在文本的第一句之前添加制表符 另外 新行的代码是什么 Add t对于选项卡和 n对于新线
  • 为什么用函数式语言编写编译器更容易? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我想这个问题很久了 但在 Google 上找不到答案 在 Stackoverflow 上也找不到类似的问题 如果有重复的 我很抱歉 很多人似乎都
  • 使用 vbscript 在命令提示符中执行多个命令

    Set oShell CreateObject WScript Shell oShell Run cmd c c 这条线执行得非常好 现在我需要输入文本 例如 c users gt abcd 我该如何在已经打开的cmd提示符中进行操作 您必
  • 接口类型变量

    我正在学习Java 我看到以下关于界面在一本书中 当变量被声明为接口类型时 它只需 意味着该对象预计已实现该接口 这是什么意思 如果我定义一个界面 public interface Myinterface void method one i
  • 以编程方式查找消息框并生成按钮点击

    我正在尝试自动测试 winform 应用程序 我在与测试代码相同的进程中运行它 因此很容易找到 Net 控件并在它们上模拟用户操作 然而 我遇到了一个消息框 使用标准 MessageBox Show 方法创建 的问题 我怎样才能掌握它并模拟
  • 如何在执行 Environment.Exit() 之前刷新 dotnet 核心应用程序中的所有记录器

    基本上 我遇到了应用程序崩溃并且没有调试日志的老问题 因为应用程序在写入日志之前就终止了 经典的方法是捕获 main 中的所有异常并刷新异常块中的所有日志缓冲区 此外 添加睡眠以降低重新启动速度并允许缓冲区完成刷新 我使用serilog 我
  • 使用 jsonb_set() 更新特定的 jsonb 数组值

    目前我正在使用 PostgreSQL 9 5 并尝试更新 jsonb 字段数组内的值 但我无法获取所选值的索引 我的桌子看起来像这样 CREATE TABLE samples id serial sample jsonb 我的 JSON 看
  • Cocos2d EXC_BAD_ACCESS

    我是 cocos2d 的新手 突然得到了这个 EXC BAD ACCESS 我做了一个新的获胜菜单 但出现了错误 我认为错误是因为我调用了一个已释放的对象 但我没有释放任何东西 我的调试控制台没有错误 这很奇怪 这是我的 Level 1 m
  • 如何在本机反应中创建“全局状态”,以便我可以将用户输入发送到另一个页面?

    我正在尝试获取用户输入 电子邮件 并将其发送到密码页面进行显示 我觉得下面的尝试不起作用 因为输入是本地的 密码页面看不到 我该怎么办 有redux的东西吗 我走在正确的轨道上吗 如果你们需要更多代码 请告诉我 我比你们知道的更感谢您的帮助
  • 使用 gradle 将 pom.xml 包含在 Jar 中

    我正在尝试包含生成的pom xml in the jar我用 gradle 创建的 到目前为止 在我的父项目中 我已经 subprojects apply plugin maven publish publishing publicatio
  • 可以从 Android 模拟器运行 WebGL 内容吗?

    您好 我一直在尝试在许多 Android 模拟器 BlueStacks Andy Duos 和 VirtualBox 中运行 WebGL 内容 当我尝试在浏览器 chrome firefox 中访问任何 WebGL 内容时 我收到一条消息
  • Javascript:最佳单例模式[重复]

    这个问题在这里已经有答案了 可能的重复 在 JavaScript 中实现单例的最简单 最干净的方法 https stackoverflow com questions 1479319 simplest cleanest way to imp
  • 如何使用 MongoDB 和 Mongoid 在 Rails 3 上进行正确的数据库测试 (TDD)

    如何通过 Mongoid on Rails 使用 MongoDB 编写适当的单元测试 以及与此相关的集成测试 我这么问是因为与使用 SQLite3 相反 即使在运行测试时 我所做的一切仍然存在 所以目前我正在编写创建测试 然后我手动删除我所
  • Mock() 函数在 django2 中给出 TypeError

    我正在跟进本教程 https www obeythetestinggoat com book chapter purist unit tests html 当我跑步时test views py根据作者的说法 我有一个不应该出现的错误 Typ