Python中Mock的示例

發表於2017-04-23

一些常用的mock示例

先簡單定義個類,方便舉例:

這個類裡有兩個成員方法,一個有引數,一個無引數。還有一個靜態方法


mock成員方法

1. 使用Mock類,返回固定值

2. 校驗引數個數,再返回固定值

上面的例子你也許已經注意到了,呼叫p.get_fullname時沒有給任何的引數,但是依然可以工作。
如果想校驗引數需要用create_autospec模組方法替代Mock類。

3. 使用side_effect, 依次返回指定值

4. 根據引數不同,返回不同的值

5. 丟擲異常

6. 檢驗是否呼叫

mock靜態方法

靜態方法和模組方法需要使用patch來mock。

1. 在測試方法引數中得到Mock物件

2. 在patch中設定Mock物件

3. 使用patch.object

4. 使用with控制作用域

mock鏈式呼叫

在django裡,我們經常需要mock資料庫,而訪問資料庫時經常是鏈式呼叫,看個例子。

有個模組方法,返回資料庫中所有指定name的人員,並按age排序

mock掉整個資料庫訪問

相關文章