问题标签 [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 投票
2 回答
6209 浏览

python - 当使用它的任何属性时,用于创建假对象的 Python 模拟返回字典

例如,我在 Django 中有一个重用请求对象的方法:

当我写unittest时,我需要创建一个假请求对象,它应该有GET属性并且应该包含一个字典{'sessionid': 'blah'}

我如何使用模拟包做到这一点?

0 投票
1 回答
555 浏览

python - 将模拟对象添加到 sqlalchemy 集合中会引发异常

我正在为具有一对多关系的 SQLAlchemy 模型类编写单元测试,但无法将模拟对象添加到集合中。

正在测试的课程:

测试代码:

附加模拟对象会引发异常:

有没有办法通过在其中添加模拟来对包含关系的类进行单元测试,同时保持集合的行为像一个简单的列表?

我正在使用模拟 1.0.1 和 sqlalchemy 0.8.2。

0 投票
1 回答
1202 浏览

unit-testing - python mock patch:调用实例方法?

在 python 2.7 中,我有这个功能

使用模拟和补丁,我可以检查令牌是否在 Slacker 类中使用

如何检查 post_message 中的字符串使用情况?

我尝试

但我明白了

0 投票
1 回答
1021 浏览

python - mock.patch() 不修补在函数调用中调用了几个级别的类

我有一个任务

Worker本身是单独模块中的单独类,他们使用Driver这样的类,

再次Driver是单独模块中的单独类

所以当我尝试类似的东西时

在任务中仍然有一个Driver类实例,但没有一个 mock。那是错误的。如何解决?

UPD1Driver并存Worker在于不同的模块中并Worker导入Driver

0 投票
2 回答
5513 浏览

python - 如何在非模拟类中使用 autospec 修补类方法?

我想断言 Python 类中的一个类方法使用一组参数调用另一个类方法。我希望模拟的类方法是“规范的”,因此它会检测是否使用错误数量的参数调用它。

当我使用 修补类方法patch.object(.., autospec=True, ..)时,类方法被替换为 aNonCallableMagicMock并在我尝试调用它时引发错误。

产生输出:

_internal_classmethod当它所属的类没有被模拟时,我怎样才能得到一个规范的模拟?

0 投票
3 回答
22279 浏览

python - Django 测试 - 在所有测试中修补对象

MockMixin我需要为我的测试创建某种类型的。它应该包括调用外部源的所有东西的模拟。例如,每次我在管理面板中保存模型时,我都会调用一些远程 URL。像这样嘲笑和使用它会很好:

因此,每次我在管理员中保存模型时,例如在功能测试中,都会应用这个模拟而不是调用远程 URL。

这真的可能吗?我可以为 1 个特定的测试做到这一点,这不是问题。但是拥有一些全局模拟会更有用,因为我经常使用它。

0 投票
2 回答
4618 浏览

python - 在 python 中模拟打开单元测试

我想使用 unittest 测试一种使用上下文管理器从文件中读取的方法:

我不想在我的系统上创建一个文件,所以我想模拟它,但我目前并没有成功。我找到了 mock_open但我真的不明白我应该如何使用它并将模拟作为 content_file 在我的测试用例中提供。例如这里有这篇文章,但我不明白应该如何在不修改原始代码的情况下在测试用例中编写它。

谁能指出我正确的方向?

0 投票
1 回答
203 浏览

python - 在方法命名空间中模拟全局对象

是否可以在来自不同模块的特定方法中模拟全局对象,例如导入的模块?

例子:

我想修补some_module以设置的返回值do_somthing(),但仅限于a_method()而不是b_method()。当然我可以使用装饰器,但是我想从不同的模块进行修补。

0 投票
1 回答
89 浏览

python - 修补时模块级代码运行两次

考虑以下简单代码:

测试代码.py

patch_stuff.py

我希望运行的输出python test_code.py

但是输出是:

怎么来的?

0 投票
1 回答
394 浏览

python - Python Mock 不断言调用

我正在使用模拟库来修补程序中的一个类,该程序连接到外部资源并发送字典。

结构有点像这样......

代码.py

测试.py

第一个 assert_call_with 工作得很好,但是对模拟类的方法的调用没有通过。我尝试过使用 patch.object 作为装饰器也没有运气。