问题标签 [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.
python-2.7 - 使用太少的参数进行调用时 Autospec 不会失败
我正在尝试找出在测试中使用 autospec 的最佳方法。在以下场景中,我使用 autospec 来检测何时使用太多参数进行调用。使用 调用时,此方案按预期工作$ python filename.py
。
但是,如果我更改测试用例以检测何时调用的参数太少,那么它会通过并且不会捕获错误。
所以我的问题是做错了什么?根据文档autospec 也应该在传递的参数太少时取消技术。
python - 在 Python 中获得响应后模拟 requests.json
我有测试:
在我拥有的文件中
我的目标是模拟get_product_info()
返回return_value
测试中的数据。我尝试过模拟requests.json
,并且requests.get.json
在没有属性时都出现错误,我已经模拟the_file.MyClient.get_product_info
了不会导致错误但不起作用,它返回真实数据。
我如何模拟get_product_info
使用请求库的这个?
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
.
python - Python 2.7 中的子类化 Mock
我有一组单元测试,它们将反复使用我想模拟的某个合作者类Rental
,每次都传递相同的参数。为了使这更容易,我想创建一个 mock.Mock 的子类并在创建时传递参数。这是代码:
问题是,当我实例化此类时,该覆盖没有明显的效果。并且试图在这里覆盖它也不起作用。
我彻底糊涂了。我已经尝试了三种方法,都直接取自文档,但似乎都没有。当我将这些参数直接传递给 Mock 实例时,它们工作正常。我错过了什么?
python - Python Mock.Patch 在几个地方使用的函数
这有效:
我得到了我的程序:
我写了一个单元测试:
这工作得很好(我nose2
用来运行我的所有测试)。
现在这不起作用:
随着我的代码越来越大,我想让其他人参与到我的项目中,我需要将我的功能模块化,以使修改更容易和更清晰。
所以我把new_input
函数放在一个新文件中module/io.py
,我得到了一个新的子函数:
我的核心程序演变为:
所以问题是要模拟的函数在几个地方:在主函数和一些子函数中。我找不到让我的单元测试工作的方法(我无法预测主函数或一个子函数中是否需要 AnswerX)。
您知道如何修复我的测试以使其正常工作吗?谢谢(我希望我已经很清楚了)。
编辑:
我试过类似的东西:
但我得到了错误:TypeError: test_multiple_answer() takes 2 positional arguments but 3 were given
。
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()
python - Python Unittest Mock - 将函数的 write() 重新路由到临时目录?
我目前正在尝试编写一个单元测试来检查函数是否写入了错误日志。出于测试目的,错误日志将被写入临时目录,但我不确定如何使用 unittest.mock 重新路由 write() 调用的位置。
任何想法如何去做?
python - 如何在测试方法中模拟受保护/私有方法?
我有一个带有 2 种方法的 Python 类。
第一个_getTemperature_()
是受保护的,第二个是公共方法。我必须写一个 unitTest 但我不知道如何模拟受保护的方法?我刚刚找到了模拟直接在测试中使用的公共方法的教程。但不是在一种可以测试的方法中。
有人可以给我提示或解释以找到有关此问题的解决方案吗?
python - Python单元测试类属性
我试图弄清楚是否有办法(单元测试)验证属性和 setter 是否被实际调用来设置 name 属性。
试图做这样的事情......
似乎从未访问过 name() 和 setter。有人有更好的主意吗?谢谢!
python - 如何修补 python dict 以使其返回多个值?
Pythonunittest.mock
允许我修补一个函数,使其返回多个值:
m()
然后多次调用将返回"myName", 100
并最终返回200
。
我还可以修补 dictpatch.dict
以返回模拟值,但我所追求的是:
我创建了一个这样做的类:
我知道我的课程受限于不复制原始键值对的方式......这当然可以改进。
您能提出一个更好的方法来实现这一目标吗?
更新:解释我的动机
我需要测试以下代码段:
因此,我必须调用instance.state['Code']
两次,通过函数代码并到达self.instance.reload()