基於代碼驅動:處理有依賴關系接口
阿新 • • 發佈:2018-06-16
gist 這樣的 equal 測試框架 return user 影響 RR 字段
數據驅動和代碼驅動的區別:
使用數據驅動好處:
- 代碼復用率高。同一測試邏輯編寫一次,可以被多條測試數據復用,提高了測試代碼的復用率,同時可以提高測試腳本的編寫效率。
- 異常排查效率高。測試框架依據測試數據,每條數據生成一條測試用例,用例執行過程相互隔離,在其中一條失敗的情況下,不會影響其他的測試用例。
缺點:但是數據驅動無法做到依賴,比如後續操作依賴登錄產生的cookie,這樣的很難實現
代碼驅動:
測試用例全是用代碼實現的
繼續完善utp,讓utp變成一個數據驅動和代碼驅動都支持的框架
適合接口之間互相依賴,需要操作數據庫,參數加密,操作redis
數據驅動:適合有大量的接口需要測試,接口之間互相不依賴
代碼驅動:適合接口之間互相依賴,需要操作數據庫,參數加密,操作redis
通常在測接口時,有些接口之間有依賴關系,並不是各自獨立的。比如有些接口可能在訪問的時候,首先要保證用戶已登錄,要用到用戶的cookie信息。
像這樣的接口在測試的時候,就要先進行登錄接口的操作,獲取到需要的cookie或session值,然後再進行測試。
舉例:
比如現在測試一個抽獎接口。需要先登錄,獲取到登錄接口返回的userid和sign字段的值。可以這樣操作:
1、先寫個登錄函數,用來獲取到登錄接口返回的內容
def login(self): url=‘/api/user/login‘ real_url=parse.urljoin(BASE_URL,url) username,password=self.register()#獲取到註冊時的用戶名和密碼 data={‘username‘:username,‘passwd‘:password} res=MyRequest.post(real_url,data) self.assertEqual(0, res.get(‘error_code‘), msg=‘登錄失敗‘) sign=res.get(‘login_info‘).get(‘sign‘) userid=res.get(‘login_info‘).get(‘userId‘) return userid,sign
2、在測試抽獎的時候,先調用登錄函數login,獲取到userid和sign,然後在作為參數傳入抽獎接口
def testchoice(self): ‘‘‘測試抽獎‘‘‘ url = ‘/api/product/choice‘ real_url = parse.urljoin(BASE_URL, url) user_id, sign = self.login()#獲取到userid和sign,需註意的是,因為此處會有調用登錄的操作,所以上面的登錄函數不需要加test前綴作為用例執行。要不然就會重復執行 data = {‘userid‘: user_id, ‘sign‘: sign} res = MyRequest.get(real_url, data) self.assertEqual(0, res.get(‘error_code‘), msg=‘抽獎接口調用失敗‘)
因為在unittest中,只要類繼承了unittest,類中的函數名以test開頭,就會被執行。所以如果login前也加了test,就會被作為用例執行一次。然後再下面抽獎用例中,調用登錄接口的時候又會被執行一次。所以避免重復執行,login函數就不需要再加test了
基於代碼驅動:處理有依賴關系接口