是否可以模拟声明import pyarrow.parquet as pq
?
我正在尝试将其模拟为:
@patch("twilio_events.workers.EngineDWH")
@patch("twilio_events.workers.pyarrow")
@patch("twilio_events.workers.s3fs")
def test_process_batch(s3fs, py, e):
pass;
但是它抛出了一个异常Attribute Error....<workspace/myproject/twilio_events/workers.py'> does not have the attribute 'pyarrow'>
。
其他模拟也可以,只有这个会引发此异常:(。
有帮助吗?
答案 0 :(得分:0)
修补程序的目标是需要替换的名称。在这种情况下,如果将实木复合地板导入为pq
,则必须替换pq
。
尝试类似
@patch("twilio_events.workers.pq")
这是explained a bit in the docs:
patch()通过(临时)将名称指向的对象更改为另一个对象来工作。可以有许多名称指向任何单个对象,因此,要使修补程序起作用,必须确保修补受测系统使用的名称。
基本原理是您修补查找对象的位置,该对象不一定与定义对象的位置相同。