问题标签 [python-unittest.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 回答
106 浏览

python-2.7 - 使用太少的参数进行调用时 Autospec 不会失败

我正在尝试找出在测试中使用 autospec 的最佳方法。在以下场景中,我使用 autospec 来检测何时使用太多参数进行调用。使用 调用时,此方案按预期工作$ python filename.py

但是,如果我更改测试用例以检测何时调用的参数太少,那么它会通过并且不会捕获错误。

所以我的问题是做错了什么?根据文档autospec 也应该在传递的参数太少时取消技术。

0 投票
1 回答
786 浏览

python - 在 Python 中获得响应后模拟 requests.json

我有测试:

在我拥有的文件中

我的目标是模拟get_product_info()返回return_value测试中的数据。我尝试过模拟requests.json,并且requests.get.json在没有属性时都出现错误,我已经模拟the_file.MyClient.get_product_info了不会导致错误但不起作用,它返回真实数据。

我如何模拟get_product_info使用请求库的这个?

0 投票
1 回答
800 浏览

python - 使用 pytest 运行测试时 unittest.mock 不起作用

我有以下项目结构:

messaging.py模块内部有一个send_schedule带有以下几行的函数:

我正在尝试修补models.Talk.query.all()通话。里面messaging_test.py有以下测试:

当我使用python3 -m pytest tests/messenger/messaging_test.py命令运行测试时,ValueError输出一个空列表,这表示调用没有被修补。你能建议解决这个问题吗?

我做了什么来解决这个问题:

  • 阅读文档的“修补位置”段落。这让我怀疑pytest以一种奇怪的方式运行我的测试。
  • 尝试使用pytest-mock但未能弄清楚如何将其与unittest.TestCase.
0 投票
1 回答
502 浏览

python - Python 2.7 中的子类化 Mock

我有一组单元测试,它们将反复使用我想模拟的某个合作者类Rental,每次都传递相同的参数。为了使这更容易,我想创建一个 mock.Mock 的子类并在创建时传递参数。这是代码:

问题是,当我实例化此类时,该覆盖没有明显的效果。并且试图在这里覆盖它不起作用。

我彻底糊涂了。我已经尝试了三种方法,都直接取自文档,但似乎都没有。当我将这些参数直接传递给 Mock 实例时,它们工作正常。我错过了什么?

0 投票
1 回答
3022 浏览

python - Python Mock.Patch 在几个地方使用的函数

这有效:

我得到了我的程序:

我写了一个单元测试:

这工作得很好(我nose2用来运行我的所有测试)。

现在这不起作用:

随着我的代码越来越大,我想让其他人参与到我的项目中,我需要将我的功能模块化,以使修改更容易和更清晰。

所以我把new_input函数放在一个新文件中module/io.py,我得到了一个新的子函数:

我的核心程序演变为:

所以问题是要模拟的函数在几个地方:在主函数和一些子函数中。我找不到让我的单元测试工作的方法(我无法预测主函数或一个子函数中是否需要 AnswerX)。

您知道如何修复我的测试以使其正常工作吗?谢谢(我希望我已经很清楚了)。

编辑:

我试过类似的东西:

但我得到了错误:TypeError: test_multiple_answer() takes 2 positional arguments but 3 were given

0 投票
4 回答
4984 浏览

python - Python 单元测试模拟。ValueError:DataFrame 的真值不明确

我正在为我的 python 2.7 方法之一编写一个单元测试用例。

在我的测试方法中,有一个方法调用将带有字符串键和 panadas 数据框的字典作为该键的值。

我想为此方法编写一个交互测试,以检查它是否使用正确的字典在内部调用该方法

在单元测试中,我确实写了我的断言来测试这样的交互

我创建 dictionary_of_string_dataframe 的方式与在实际方法中创建的方式完全相同。事实上,我复制了在测试代码中执行此操作的辅助方法,只是为了确保两个字典相同。我什至在 python 控制台上调试测试方法时打印了这两个字典,它们看起来完全一样。

我使用@patch 装饰器修补外部类,一切正常。

问题是在上面提到的断言语句中,我收到以下错误:

我确实搜索了 valueError 但没有太多帮助。有人可以告诉我这里发生了什么吗?

我确实检查了以下问题,但这没有帮助

ValueError:DataFrame 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()

0 投票
0 回答
94 浏览

python - Python Unittest Mock - 将函数的 write() 重新路由到临时目录?

我目前正在尝试编写一个单元测试来检查函数是否写入了错误日志。出于测试目的,错误日志将被写入临时目录,但我不确定如何使用 unittest.mock 重新路由 write() 调用的位置。

任何想法如何去做?

0 投票
3 回答
9160 浏览

python - 如何在测试方法中模拟受保护/私有方法?

我有一个带有 2 种方法的 Python 类。

第一个_getTemperature_()是受保护的,第二个是公共方法。我必须写一个 unitTest 但我不知道如何模拟受保护的方法?我刚刚找到了模拟直接在测试中使用的公共方法的教程。但不是在一种可以测试的方法中。

有人可以给我提示或解释以找到有关此问题的解决方案吗?

0 投票
2 回答
5075 浏览

python - Python单元测试类属性

我试图弄清楚是否有办法(单元测试)验证属性和 setter 是否被实际调用来设置 name 属性。

试图做这样的事情......

似乎从未访问过 name() 和 setter。有人有更好的主意吗?谢谢!

0 投票
0 回答
998 浏览

python - 如何修补 python dict 以使其返回多个值?

Pythonunittest.mock允许我修补一个函数,使其返回多个值:

m()然后多次调用将返回"myName", 100并最终返回200

我还可以修补 dictpatch.dict以返回模拟值,但我所追求的是:

我创建了一个这样做的类:

我知道我的课程受限于不复制原始键值对的方式......这当然可以改进。

您能提出一个更好的方法来实现这一目标吗?

更新:解释我的动机

我需要测试以下代码段:

因此,我必须调用instance.state['Code']两次,通过函数代码并到达self.instance.reload()