我正在写一个基本的嘲笑框架,所以我可以测试一些调用peewee。我可以依靠在传入python之前进行评估的参数吗?
我知道peewee,你可以where()
电话像
model.select().where(model.id == target_id). ...
为了检测这些被比较的模型的领域,我将覆盖该领域的比较操作。然后我会注入该模型来代替peewee模型。它将提供与peewee模型相同的接口(尽管需要尽可能多),但不是访问数据库,而是记录比较和调用;但是它将全部取决于在之前正在评估的参数,该方法被调用。
我已经运行了一个使用anaconda的示例,并且对于Linux Mint提供的任何python,它们似乎都按照我的意愿操作。我不确定这是否是运行时侥幸,或者python确实可以在需要之前评估比较。
那么,关于以下情况,我可以依靠model.id == target_id, ...
运行比较,然后在第一个where()
被调用?我可以依靠model.name == target_name
在调用第二个where()
之前运行它的比较,并且在第一个where()
之后?
mockModel.select()
.where(model.id == target_id, model.number == target_number)
.where(model.name == target_name)
...
参数中的表达式被完全执行到结果对象中,并且该对象被传递给函数。所以,是的,他们必须在通话之前完全解决。 – tdelaney
好的,很酷;但这种解决有多早?包含行之前?在方法链中第一次调用之前?在调用任何方法之前,是否在方法链中评估了所有表达式? –