接口测试思考——脚本编写(一)

序言

接口测试脚本本质是被测试框架调用的,执行脚本时通过测试框架的命令来执行
接口测试脚本=测试库+业务用例
测试框架=运行器+上下文+测试集
框架和脚本的层次关系如下:

层次关系

注:这里的被测系统通过业务用例来请求接口

接口测试脚本的结构如下

脚本结构

测试库

使用框架提供的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

你可能感兴趣的:(接口测试思考——脚本编写(一))