序言
接口测试脚本本质是被测试框架调用的,执行脚本时通过测试框架的命令来执行
接口测试脚本=测试库+业务用例
测试框架=运行器+上下文+测试集
框架和脚本的层次关系如下:
注:这里的被测系统通过业务用例来请求接口
接口测试脚本的结构如下:
测试库
使用框架提供的test对象(test类),来编写测试库,使接口支持关键字驱动、参数驱动
1、接口封装
接口封装是指对接口请求的代码重用,因为要测试一个新接口时,通常是在干净的本地环境(只有基础数据),先模拟用户操作来生成前置数据,再通过前置数据来测对应接口
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 状态码正确')
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
通过对象的方法使用封装的接口:
sessionId=User_cmd(test).login(account)
流程封装:对于生成前置数据时常用的流程,可以通过函数来按流程调用多个接口
2、用户上下文
编写一个User类,其类属性包括有session、user_id等等用户相关数据(最好支持序列化)
用户上下文的使用:
user1=User(test,num=1)
user1.sessionId #编号为1用户的 session
user1.id #编号为1用户的 user_id