问题标签 [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 - Python SQLAlchemy 模拟
这是我进行链式数据库查询调用的一种方法。
我应该嘲笑DBSession().query(SomeClass).all()
。我尝试了一些,但没有任何效果。这是我的试验。
在这次尝试中,如果我尝试打印DBSession()
,我会得到一个MagicMock
看起来不错的对象。但是当我运行时pytest
出现以下错误。
好像我在嘲笑时做错了什么。我的错误是什么?我检查了文档。
python - 如何在python中将数据模拟为request.Response类型
我想编写一些测试用例来在 isinstance(obj, requests.Response) 逻辑中练习object_check 。在我创建 Mock 数据作为 requests.post 的返回值之后。模拟数据的类型始终是 Mock 类。这样,我如何重写模拟数据,以便模拟数据可以是 requests.Response 的类型?这样我可以运动行d = obj.json()
吗?
python - 补丁方法在导入时不起作用
我正在尝试模拟模块 dog.py 文件的开头。补丁方法似乎在导入时不起作用,但在以后的调用中起作用。
测试.py
狗.py
猫.py
当调用“from dog import Dog”时,Cat 不是模拟类而是真正的类。但是,当调用“dog = Dog("a dog")”时,Cat 就是模拟对象。
为什么导入模块时 Cat 不是 mock?
python - Python方法:在一个单元测试中执行多个IP?最佳做法?
细节
对于更大的单元测试,我需要 Python 中的一种方法,它允许服务器/交换机/路由器调用 IP 并相应地响应测试。
我在这方面的想法:
从 CSV 文件中读取 IP
创建一个配置文件,我在其中输入所有相关数据。
设置
测试设置
所以我需要什么:
如何在 Python 中编写一个允许我为测试运行多个 IP 的方法?
这值得一个配置脚本吗?
在此示例中,您将看到我正在运行的测试。
通过上述设置调用各个测试,但一次仅根据一台设备调用。那么如何扩展它以便我可以同时调用各种 IP 呢?
python - 单元测试模拟/覆盖套接字的发送
[编辑:这个问题只存在于 Python 2.7。使用 3.7 它可以按预期工作。任何想法可能有什么区别,以及是否有可能使它也适用于 2.7,由于某些原因我必须使用它]
我想sendto
使用 Mock 覆盖套接字的方法。我的第一种方法是这样的:
但是,这导致了异常:
AttributeError:“_socketobject”对象属性“sendto”是只读的。
这种方法适用于其他类,但不适用于套接字。我接受它,原因是__init__
为所有成员函数调用 setattr,如下所示:
然后,我尝试了另一种方法:
这行得通,但是,调用参数列表只给了我:
对应于构造函数AF_INET=2
和SOCK_DGRAM=2
。没有我调用的痕迹sendto
。我的解决方法是使用从mock_sendto
函数中设置的全局变量。不过,不是很优雅。
我有三个问题:
- 我可以解决“只读”问题并获得最初的工作方法吗?
- 为什么
all_args_list
只跟踪构造的调用而不跟踪 sendto 的调用? - 有比使用全局变量更好的方法吗?
提前感谢您的回答!
python - Python模拟打开并检查关闭
我正在尝试模拟 open 并想检查 close 是否至少被调用一次
到目前为止,这是我的工作测试代码,现在我想另外检查是否调用了 close 方法我试图添加
mock_file.close.assert_called_once()
和
但两者都不会捕获方法调用。
python - Python中的连接单元测试
我是 Python 单元测试的新手,我不确定如何创建一个返回连接的函数的单元测试?
python - 在 Mock 对象上使用方法
我有一个用于从另一个非常简单的服务获取信息的对象。由于对象很简单并且初始化方法可以很容易地修补,我想我会尝试编写我的代码以实现超级可重用和可扩展。但是,唉,我不知道如何使它工作。下面的代码是相当不错的 sudo 代码,并且非常简化,但它应该明白这一点。
然后我有一个请求处理程序对象,它通过 get_client() 初始化客户端(见下文)
然后请求处理程序上的一个方法使用不同参数的 client.read() 方法几次(第二个取决于第一个)。
对于我的测试,我认为我可以“修补”get_client 方法以返回我自己的简单对象,然后可以“定期”使用该对象并消除对第三方服务的依赖,并实际使用从方法执行中检索到的值。我很失望地发现它不是那么容易和干净。测试模式如下所示。
我已经看到在哪里可以模拟实际 client.read() 的响应以返回带有列表的多个值。但这似乎我会做大量的复制和粘贴,并且必须为每个小测试一遍又一遍地做同样的事情。如果这很简单,请原谅我,遗憾的是我只是在学习测试的艺术。有没有办法完成我想做的事情?也许我缺少一些超级简单的东西。或者,也许我只是无缘无故地走错了路。帮助?!
python-3.x - unittest.mock:如何模拟两个方法调用?
我如何通过对同一方法的两次调用来模拟 datetime.datetime.now?
下面我试过: