1. 程式人生 > >基於代碼驅動:處理有依賴關系接口

基於代碼驅動:處理有依賴關系接口

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了

基於代碼驅動:處理有依賴關系接口