问题标签 [pymox]

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 回答
868 浏览

python - 如何用 pymox 对这段代码进行单元测试?

所以我已经安装了pymox,我想测试这个方法:

我正在阅读 pymox 文档,但我不知道该怎么做。你能帮我一些示例代码吗?

0 投票
1 回答
748 浏览

python - Mox (pymox) 框架的 CreateMockAnything() 的优缺点

首先是问题的原因 - 官方 pymox 文档: https ://code.google.com/p/pymox/wiki/MoxDocumentation

MockAnything部分中有一条声明告诉“除非绝对必须,否则不要使用它!” . 我很有趣为什么会这样?它有一些限制吗?我个人觉得它非常有用。

我有以下情况:我在我的班级中有一个对模块的引用,该模块有一堆我的班级使用的模块级函数。

由于这是一个模块,我无法使用CreateMock()模拟它,因为这不是一种类型。因此,我使用了非常适合这种情况的CreateMockAnything() 。我知道我可以使用以下方法存根模块功能:

但我不喜欢这种方式,因为这里我每次都需要做两个动作。在类中引用模块并使用CreateMockAnything模拟它更简单、更漂亮。

如果我错误打印了某些函数名称,那么期望就会失败(因为正在测试的代码正在调用正确的代码),所以这不是重点……

对于StubOutWithMock:如果我在测试方法中没有注意到一些额外的 db 函数调用,并且不会存根它StubOutWithMock,它将调用真实代码并在 db 中留下一些垃圾。所以还有一点来保护我的解决方案 - 使用CreateMockAnything而不是存根特定方法可以让我完全切断我的数据库依赖关系,而且我还将看到 MockAnything 模拟引发的意外方法调用异常。

那么避免使用CreateMockAnything()的原因是什么?

谢谢,

0 投票
1 回答
1268 浏览

python - 使用 mox 模拟变量

我想测试这个方法,但是我需要模拟变量dirContent

如何使用 mox 模拟变量?然而,这就是我试图模拟的方式os.listdir

也试过这种方式

但是对正在测试的方法的调用无法识别模拟的discontent

0 投票
1 回答
184 浏览

python - 当使用 python mox 模拟对象时,有什么方法可以避免它们都相等(如 __eq__ 中)?

我遇到了一些问题,尽管它们是不同的对象(至少返回),但给定类的几个所有 mox Mock 对象似乎在==意义__eq__mock1 is mock2False相等的。有什么办法可以防止这种行为?

在下面的代码示例中,您可以看到计数是错误的,因为它认为所有的模拟都是相等的:

0 投票
1 回答
244 浏览

python - 做monkeyPatch和StubOutwithMock有什么区别?

我在进行单元测试时遇到了这个问题,我很想知道以下两者之间有什么区别?

其中 myFunc 是模块中的公共函数,n 是传递给 myFunc 的参数,它返回 someObject。

0 投票
0 回答
131 浏览

python-unittest - 使用 pymox 模拟多次调用的函数

我在代码中有一个被调用两次的函数。 get_user_settings 一旦它在我正在测试的函数中被调用,并且第二次某些不同的模块具有再次调用它的函数。

我已经像这样使用 pymox 模拟了它:

模拟适用于我的测试代码的第一次调用,但是当它在 utils 模块中再次调用时,我收到以下错误

0 投票
0 回答
11 浏览

python - 使用 pymox 模拟导入的方法

我有一个名为“routine.py”的文件,我想测试它的一个功能。

例程.py

我想测试这个功能routine_function,但我很难模拟这些导入的方法。因为some_method3,我用过

这是可能的,因为我可以将模块/类的参数指定为“self”,但是对于其他方法该怎么办?