问题标签 [python-mock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1510 浏览

django - Django - 如何在测试期间更改 FileField upload_to 路径

我正在为带有 FileField 的 Django 模型编写测试用例。我想更改上传路径以防止测试对系统的其余部分产生副作用。

我尝试将可调用传递给 upload_to 并在测试中对其进行修补:

然而,这似乎不起作用,我相信原因是在任何测试代码运行之前,upload_path 被 FileField 取消引用,所以现在修补东西为时已晚。

如何让测试代码更改 upload_to 是什么?如果做不到这一点,模型如何检查它是否正在通过测试运行?

0 投票
2 回答
8482 浏览

python - 我可以将实例方法添加到 Python“模拟”对象吗?

我想创建一个mock.Mock()对象,然后添加一个称为session实例方法的方法,该方法传递一个self对模拟对象的引用,允许该方法向模拟对象添加状态。这是否可能(无需手动使用types.MethodType,例如使用 mock 的内置 API),还是我应该找到解决方法?

请注意,我发现了这个问题,它是针对 Ruby 的,并且似乎涵盖了类似的内容,如果不是同一件事的话。不幸的是,我一点也不了解 Ruby。

0 投票
1 回答
571 浏览

python - 在一个 Django 应用程序中模拟装饰器

我想测试

  • 如果视图装饰器正常工作
  • 如果调用了正确的视图

所以,这里的装饰器get_object和视图featuresmyapp.views.

我试着嘲笑这个:

这没有显示任何内容,好像没有调用模拟对象,尽管我想它应该是。

如何正确模拟装饰视图?

0 投票
1 回答
2062 浏览

python - django 测试中的修补(模拟)表单形式

我试图用 mock.patch 模拟表单并且不能。我有这个代码

表格.py

视图.py:

我想单独测试这个视图。我试图用 mock.patch 修补表单,我写了这样的东西:

测试.py:

我试图用谷歌搜索解决方案,但一无所获

已回答:感谢@dstanek 提供好的答案和好的代码示例

0 投票
1 回答
1417 浏览

django - 在 Django 的基于类的视图中模拟函数

我正在将 Django REST Framework 用于我正在处理的 API。出于几个原因,我想使用基于类的视图。但是,我对我的单元测试有点挑剔,我从不让我的单元测试接触数据库。注意:我总是使用 Carl Meyer 在 Pycon 2012 演示的“技巧”,他在其中模拟了 Cursor 包装器。

这是如果您对幻灯片感兴趣,链接。

我在其中一个视图中有一个方法可以检查数据库中的某些内容。为了干燥,它在 POST 和 PUT 之间共享。但是,我在为我的单元测试模拟它时遇到了问题。这是因为类方法 as_view 创建了一个新的实例和类调度,并返回调度返回的“处理程序”函数。所以,我似乎无法在基于类的视图中获取共享方法来模拟它。

我可以模拟出基于类的视图使用的模型,但是我必须从根本上打破我的“干”目标,并在 POST 和 PUT 中复制代码。我想我可以重构代码并将逻辑移到模型上。但是,我并不肯定我想这样做。

您如何模拟基于类的视图的共享方法以避免实际接触数据库?只是避开他们?

0 投票
1 回答
1012 浏览

python-2.7 - 如何为嵌入 IPython Interactive Shell 的 Python 应用程序编写单元测试

我有一个长时间运行的模拟,我需要在模拟的给定时间停止并检索和观察一些信息,然后让模拟继续。我最近开始使用测试驱动设计方法,不幸的是我不知道如何对放入交互式外壳的应用程序进行单元测试。

这是我正在尝试做的基本想法:

以下是 peek_a_boo 模块如何使用的示例:

我的第一个倾向是使用模拟并修补嵌入方法并验证它是否已使用正确的参数调用,但我想知道是否有人有其他建议?

更新:

所以我使用鼻子进行单元测试,我尝试了以下方法:

但是当我运行时:

鼻子测试 test_peek_a_boo.py

进程挂起。如果我运行:

鼻子测试 test_peek_a_boo.py -s

我可以看到我的过程正在进入交互式外壳。

更新 2:

我能够通过在测试类的 test_method 中导入 peek_a_boo 来运行上面的测试。

这个嵌入的测试实际上是调用的,但我希望能够测试 a 和 b 是否都进入了 activate 方法的本地范围。

0 投票
2 回答
108981 浏览

python - Python 从导入的模块中模拟一个函数

我想了解如何@patch从导入的模块中获取功能。

这是我到目前为止的地方。

应用程序/模拟.py:

应用程序/my_module/__init__.py:

测试/模拟测试.py:

这不像我预期的那样工作“已修补”模块仅返回get_user_name. 如何模拟要导入到正在测试的命名空间的其他包中的方法?

0 投票
1 回答
842 浏览

python - 如何修补存储在变量中的函数?

如何使以下测试起作用?

我的模块.py

测试.py

当我执行测试时出现ConnectionError异常,因为foo正在执行真正的requests.post.

0 投票
2 回答
4014 浏览

python - 如何使用 Mock 库来模拟 Django ForeignKey 值?

我有一个模型,我正在尝试在不调用数据库层的情况下测试验证。我将发布一些示例代码,而不是用文字来描述。这里的问题是与 Bar 的 ForeignKey 关系,这与我要测试的内容无关,但会阻止我运行我想要的测试。

首先,myapp/models.py

接下来,myapp/tests.py

最后,输出python manage.py test myapp

所以我的问题是... 怎么办?

0 投票
3 回答
101142 浏览

python - Python模拟中的模拟属性?

mock在 Python 中使用起来相当困难:

测试实际上返回了正确的值,但r.ok它是一个 Mock 对象,而不是True. 你如何模拟 Pythonmock库中的属性?