介面測試-工作心得記錄十一(unittest.skipif使用)
背景:最近把jenkins的呼叫頻率調高了,這樣就遇到之前沒有遇到的問題,介面不同調用頻率對應response返回json結構體會有不同。舉個例子,商戶端都有發帖的功能,postpub釋出介面一天只能釋出10個帖子,當超過10個的時候就會有不同的json結構體。面對這樣的問題,解決方法我想到就2個,第一就是在書寫case的時候寫兩個hope_response,在check介面返回response的時候校驗兩個(這樣check方法就要支援hope_response就要支援類似assert_in的方法,目前沒有想到要怎麼寫。。),所以就採用第二個就是用unittest.skipif(condition
先看一下最後寫的效果:
裡面呼叫一個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框架,還是很方便的。