python - Pytest、setup_method 和类级模拟
问题描述
我有一个最初看起来像这样的测试:
@mock.patch('serial.Serial')
class TestApi:
def test_something(self, mock_serial):
# The Gadget class opens a serial port with serial.Serial()
gadget = Gadget('dummy')
mock_serial.assert_called_with('dummy')
这工作得很好......但我将gadget
在所有其他测试中都需要相同的对象,所以我想将对象创建移动到一个setup_method
方法中,pytest 将在每次测试之前调用该方法。例如:
@mock.patch('serial.Serial')
class TestApi:
def setup_method(self):
# The Gadget class opens a serial port with serial.Serial()
self.gadget = Gadget('dummy')
def test_something(self, mock_serial):
mock_serial.assert_called_with('dummy')
看起来好像模拟在setup_method
被调用时没有生效,所以上面会失败:
E serial.serialutil.SerialException: [Errno 2] could not open port dummy: [Errno 2] No such file or directory: 'dummy'
有没有办法从内部使用类级别的模拟setup_method
?
解决方案
推荐阅读
- facebook - 如何在 Botframework 版本 4 中使轮播图像可点击
- flask - 在 jinja 模板中使用其他变量创建新的多行字符串变量
- checkbox - ngx 数据表默认选择复选框
- javascript - dialogflow 错误:14 不可用:从插件获取元数据失败并出现错误:生成器已在运行
- html - 水平菜单到垂直菜单,无需添加任何额外的 HTML 属性
- angular - 仅获取新发出的值
- bash - bash - 使用 set -e 时如何处理退出代码并获取命令输出
- javascript - 是否可以在 Nestjs 中的一种方法上使用多个装饰器?
- amazon-web-services - AWS Storage Gateway 连接问题
- facebook-graph-api - 如何通过 Facebook graph api 获取详细的共享 url 数据