序言
接口測(cè)試腳本本質(zhì)是被測(cè)試框架調(diào)用的剪决,執(zhí)行腳本時(shí)通過(guò)測(cè)試框架的命令來(lái)執(zhí)行
接口測(cè)試腳本=測(cè)試庫(kù)+業(yè)務(wù)用例
測(cè)試框架=運(yùn)行器+上下文+測(cè)試集
框架和腳本的層次關(guān)系如下:
層次關(guān)系
注:這里的被測(cè)系統(tǒng)通過(guò)業(yè)務(wù)用例來(lái)請(qǐng)求接口
接口測(cè)試腳本的結(jié)構(gòu)如下:
腳本結(jié)構(gòu)
測(cè)試庫(kù)
使用框架提供的test對(duì)象(test類)斑唬,來(lái)編寫(xiě)測(cè)試庫(kù)完慧,使接口支持關(guān)鍵字驅(qū)動(dòng)、參數(shù)驅(qū)動(dòng)
1绊含、接口封裝
接口封裝是指對(duì)接口請(qǐng)求的代碼重用桑嘶,因?yàn)橐獪y(cè)試一個(gè)新接口時(shí),通常是在干凈的本地環(huán)境(只有基礎(chǔ)數(shù)據(jù))艺挪,先模擬用戶操作來(lái)生成前置數(shù)據(jù)不翩,再通過(guò)前置數(shù)據(jù)來(lái)測(cè)對(duì)應(yīng)接口
import yaml
class Api_cmd(object):
def __init__(self,test):
self.test=test
self.URL=test.get_config('http.url')
def _run_command(self,method,params_yaml,URL=None):
params = yaml.load(params_yaml)
if URL==None:
URL=self.URL
self.test.jsonrpc(URL, method, **params)
self.test.assert_http_status_ok('http 狀態(tài)碼正確')
self.test.assert_jsonrpc_has_result()
return self.test.jsonrpc_result
class User_cmd(Api_cmd):
def login(self,account):
#用戶登錄,返回sessionId
params_yaml = """
account: {account}
password: '123456'
""".format(account=account)
result=self._run_command('user_login',params_yaml)
return result
通過(guò)對(duì)象的方法使用封裝的接口:
sessionId=User_cmd(test).login(account)
流程封裝:對(duì)于生成前置數(shù)據(jù)時(shí)常用的流程麻裳,可以通過(guò)函數(shù)來(lái)按流程調(diào)用多個(gè)接口
2口蝠、用戶上下文
編寫(xiě)一個(gè)User類,其類屬性包括有session津坑、user_id等等用戶相關(guān)數(shù)據(jù)(最好支持序列化)
用戶上下文的使用:
user1=User(test,num=1)
user1.sessionId #編號(hào)為1用戶的 session
user1.id #編號(hào)為1用戶的 user_id