问题标签 [mox]

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

python - 如何模拟 Pythonic 方式?

Mox 模拟库允许您对正在模拟的类进行特定或不可知论。

  1. mock = mox.CreateMock(Foo)或者
  2. mock = mox.CreateMockAnything()

Mox 文档建议尽可能使用第一种方法(基本上检查模拟的类型)。Python 作为一种动态语言与类型无关。这两种方法在我看来不一致。

那么,哪种模拟方法更符合 Python 风格?

0 投票
1 回答
2250 浏览

python - Python 单元测试如何使用 Mox 模拟 gzip with 语句

在 Python 中,如何使用 mox 单元测试库模拟在 with 语句中创建的对象

代码

单元测试

AttributeError: __exit__在线收到错误

0 投票
1 回答
3721 浏览

python - Python 从 py 模块读取所有导入语句的简单方法

我正在尝试创建一个辅助函数来读取文件并模拟单元测试的所有导入。我必须阅读文件与导入,因为我在 python 路径上没有这些东西。

示例代码:



以上是模拟代码,我真的在寻找将文件标记为“from/import statements”的最佳方法

有道理?我知道我可以逐行读取文件,但我希望有一种更简洁/简洁的方式。

如果您有任何问题,请告诉我。

0 投票
1 回答
2271 浏览

python - 如何模拟从 getattr 返回的函数?

我有一门课,它做类似的事情:

但是当我尝试做类似的事情时:

mox 错误:

如何模拟委托调用?

0 投票
2 回答
1831 浏览

unit-testing - 为什么使用 mox 的失败测试也会失败其他测试?

我的问题很简单:我有一堆使用 pymox 的单元测试。当我添加一个失败的新测试时,大多数时候很多其他测试也会失败。我怎样才能防止这种情况发生?

例如,我有一个简单的脚本,我有两个单元测试:

通常,两个测试都通过,但如果我在第二次测试中偷偷输入错字,我会在运行测试时得到以下输出:

第一个测试应该没有错误地通过,因为它没有改变一点。check_es_insert.getArgs() 不应该是 MockAnything 实例,而且我没有忘记调用 UnsetStubs。我已经搜索了很多,但没有找到其他有同样问题的人。所以我想我错过了一些非常明显的东西......

附加信息:

  • check_es_docs 是我正在测试的脚本
  • check_es_insert 是另一个我从中导入很多东西的脚本
  • 我尝试将 UnsetStubs() 放在 VerifyAll() 之后,结果相同
  • 我尝试从 SetUp 方法初始化 mox.Mox() 对象,并将清理内容放入 TearDown,结果相同
0 投票
1 回答
868 浏览

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

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

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

0 投票
2 回答
2537 浏览

python - 运行 python mox 测试时从未调用过预期的方法

我正在尝试编写一个读取电子表格(4 列)、获取提要并将特定列(2 列)写入 CSV 文件的 mox 测试。我试图通过第一步,即获取列表提要,我的代码如下:

当我运行它时,我收到以下错误:

知道如何解决此错误吗?

0 投票
0 回答
102 浏览

python - 当我知道我模拟出来的函数被调用时,为什么我会从 mox 得到 ValueError("必须至少有一种预期的方法")?

我正在使用 mox 在我的代码中删除电子邮件发送功能。我想验证该函数是否被调用 N 次,每次都使用一组参数。

Mox 正在引发 ValueError("必须至少有一个预期的方法") ,就好像我已经存根的函数调用没有发生,但它们实际上似乎正在发生。

观察我的日志,我可以看到正在调用的函数,并看到我的数据库中的所有日志消息/更新,这些消息告诉我正在测试的代码实际上正在运行。我还有 14 个其他单元测试来验证这一点,所以我相信这是测试而不是底层代码的问题。

这是我的测试:

为什么mox说电话从来没有发生过?我在 mox 文档或 SO 上的其他地方找不到任何关于此的信息。

0 投票
1 回答
912 浏览

python - 如何只模拟您正在测试的对象中调用的一种方法

我想测试一个方法,但要模拟它调用的其他方法。我创建了这个简单的例子来说明这个概念:

我使用了一个名为 Mox 的 python 模拟框架并编写了以下代码来执行此操作:

评论:

我想如果我在一个没有被覆盖的方法上调用这个模拟,那么模拟将默认为原始代码,然后我可以获得我想要的调用链,最后一个调用被替换......但是它不这样做。我不知道如何在没有插入方法的测试对象中嵌入模拟对象。

我研究了 Partial Mocks 和 Chained Mocks 来解决这个问题,但我找不到解决这个问题的方法。

谢谢你的帮助 :)

——彼得

0 投票
1 回答
136 浏览

python - 如何在没有签名检查的情况下模拟方法调用?

我使用 mox 来模拟​​一个对象。我需要记录方法调用,但该方法接收到很多我不感兴趣的参数,其中一些参数不是原始类型,而是在其他地方创建的类的实例。

我想避免检查传递的参数。如何?