我是一个Python新手,我了解测试,但是,我不能在处理模拟对象和副作用上绞尽脑汁。在
我的方法是:
@retry(every=RETRY_EVERY, until=RETRY_UNTIL)
@unique()
@sessionized(0)
def record_click(session, queue, mailing_id, member_id, link_id, timestamp, user_agent):
message = session.query(Message).get((mailing_id, member_id))
mailing = session.query(Mailing).get(mailing_id)
# More code here
这是我的测试:
^{pr2}$我一直收到的错误是:
而不是call().publish_link_clicked(group_ids=[111], account_id=77, **etc)
这就是UnitTest中所称的call().publish_link_clicked(group_ids=<MagicMock name='Session().query().get().recipient_groups' id='4557662736'>, account_id=<MagicMock name='Session().query().get().account_id' id='4557652048'>, **etc)
我做错什么了?在
不要调用} attribute 来遍历调用图:
Session()
或query()
;使用^{我通常使用中介名称来保存返回值:
^{pr2}$您还需要修补右
Session
类;这完全取决于代码如何将session
参数生成为record_click
。有关详细信息,请参见Where to Patch。如果@sessionized
修饰符产生了这个参数,并且它不在audience.jobs
模块中,那么您没有修补正确的位置。在相关问题 更多 >
编程相关推荐