问题标签 [fudge]

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

python - 如何存根对象的 __call__ 方法?

我正在使用NoseandFudge进行单元测试。考虑以下类:

和一个测试:

我得到的错误是:

我正在存根的代码有一个看起来像这样的返回行(“ SomeCommandline”的真实版本)

为什么我收到 TypeError 说 Fake 不可迭代,我该如何存根这个方法fudge

0 投票
1 回答
545 浏览

python - 自动模拟 Python?

我习惯于在 C# 中使用AutoFixture.AutoMoq,并想知道 Python 是否有类似的东西。我没有使用 django 或数据库,所以django-autofixture不会帮助我。

我正在寻找的是可以减少我需要编写的代码,以使用存根/模拟设置所有相互关联的对象以进行测试。我正在使用 IoC 模式进行设计(但没有 DI 框架,因为 Python 并不真正需要它们)。

我正在使用鼻子和软糖。

0 投票
1 回答
307 浏览

python - Fudge:当从 X 导入 Y'ing 而不是导入 X 时,@patch 不起作用?

patch我在 Fudge 1.0.3 中遇到了装饰器的一种奇怪行为。通过导入类时它不会修补模块

但在导入时工作正常

与相应的代码适配。

这是一个最小化的设置:

mdle.py

some.py(测试不工作):

some.py(测试工作):

some_test.py

我应该以不同的方式修补吗?这是 Fudge 的限制,还是错误?

0 投票
1 回答
355 浏览

python - 如何在 pytest 中使用 fudge.patch

我正在从鼻子切换到pytest并且在使用fudge创建模拟/伪造品时遇到问题,因为@fudge.patch将它们传递给测试函数但 pytest 将测试函数参数解释为固定装置。

我想知道 pytest 和 fudge 是否从根本上不兼容,或者我是否缺少一个技巧。我更喜欢 fudge而不是mock,因为它允许您在测试之前更直观地设置期望,而 mock 通过在测试之前定义返回值和之后定义预期调用来拆分事物。

用鼻子我可以用这样的猴子补丁fudge.Fake

请注意 fudge 如何让您在一个地方设置预期调用和虚假返回,我发现这比 mock 更直观。

但是,使用 pytest 会引发异常,因为 pytest 将测试函数的参数解释为夹具,并且不知道名为 fake_today 的夹具:

我可以将 a 声明fake_today为夹具,但我认为 pytest 不会检查期望值,如果确实如此,那么无论在何处使用夹具,它都会始终具有相同的期望值,这并不总是有意义的。

我可以monkeypatch在测试函数中使用fixture 来注入Fakes,但这不如使用装饰器那么简洁。

我还可以定义返回Fake这样的固定装置:

但是你必须为每一个Fake你想注射的人都这样做,这看起来很笨拙。

不知道什么是最好的方法。