1. 程式人生 > >介面測試-工作心得記錄十一(unittest.skipif使用)

介面測試-工作心得記錄十一(unittest.skipif使用)

背景:最近把jenkins的呼叫頻率調高了,這樣就遇到之前沒有遇到的問題,介面不同調用頻率對應response返回json結構體會有不同。舉個例子,商戶端都有發帖的功能,postpub釋出介面一天只能釋出10個帖子,當超過10個的時候就會有不同的json結構體。面對這樣的問題,解決方法我想到就2個,第一就是在書寫case的時候寫兩個hope_response,在check介面返回response的時候校驗兩個(這樣check方法就要支援hope_response就要支援類似assert_in的方法,目前沒有想到要怎麼寫。。),所以就採用第二個就是用unittest.skipif(condition

),當condition為true時就會執行case,false則不執行。

先看一下最後寫的效果:


裡面呼叫一個postpub_condition()方法用於判斷boolen型別

思路:判斷邏輯首先要在配置檔案定義一個times(次數)記錄發了多少次,每次釋出成功後增加一次,當times>=10時就返回false,case跳過,times<10次是為true,繼續執行case。

還要判斷是不是當天,當時第二天是times要清0,重新計數,先看一下配置檔案:


定義times和date,一個用於計數,一個用於判斷日期。

首先是書寫配置檔案的:


就是使用ConfigParser()類來書寫,沒啥好說的,不會的自己上網看一下,很簡單的。

下面試讀取config的方法。如圖:


下圖是,往配置檔案書寫次數+1的方法:


最後就是判斷times和date來返回true和false,如圖:


簡單說明一下:

讀取配置檔案的日期和當前日期進行比較,如果不等就把次數重置成0,我覺得不需要判斷是大是小,因為這個沒人改而且改伺服器時間可能性太低了,做了基本的比對就行了,

這裡面用了說去時間方法,如圖:


使用date.timedelta()方法可以計算日期,返回date型的,讀取配置檔案的日期是string型別的,所以要強轉成str,這是個坑注意一下,資料型別,最後就是times<maxtimes時就計數+1,大體就是這些,活用unittest框架,還是很方便的。