我正在寫一個基本的嘲笑框架,所以我可以測試一些調用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
好的,很酷;但這種解決有多早?包含行之前?在方法鏈中第一次調用之前?在調用任何方法之前,是否在方法鏈中評估了所有表達式? –