最近看到了一个接口测试框架HttpRunner,这是一个由国人编写的开源测试框架。这个框架支持的功能,可以说满足了我之前对于接口测试框架的设想。测试用例编写、执行操作都非常简单,又支持参数函数化。这个框架不仅可以用来进行接口测试,还能够用于性能测试。
使用技术
Flask:轻量级web框架,主要用于搭建API接口服务unittest:测试框架
个人理解
为什么做
1. TDD模式,测试驱动开发2. 自行搭建API接口服务,可以自己编写调整接口的实现方法
3. 主要还是用于测试编写的程序
做什么
1. request-》response-》validate-》result 总的来说我们这个程序是组装request,获得接口的response然后经由校验最终得出结果。所以单元测试框架,要实现满足我们程序需求的接口。例如,增删改查用户接口。2. request =》 response 知道了第一点之后,接下来的任务就是搭建API Server了。
源码阅读
@app.route('/api/get-token', methods=['POST'])
def get_token():
# 获取request的头部信息
user_agent = request.headers.get('User-Agent', "")
device_sn = request.headers.get('device_sn', "")
os_platform = request.headers.get('os_platform', "")
app_version = request.headers.get('app_version', "")
data = request.get_json()
sign = data.get('sign', "")
# 使用头部信息生成sign参数(用于校验)
expected_sign = utils.get_sign(user_agent, device_sn, os_platform, app_version)
# 如果头部信息生成的sign与request中携带的sign不符合就提示验证失败
if expected_sign != sign:
result = {
'success': False,
'msg': "Authorization failed!"
}
response = make_response(json.dumps(result), 403)
else:
# 如果验证通过,就将随机生成的16位数token存入device_sn中,并将token存入result中
token = utils.gen_random_string(16)
token_dict[device_sn] = token
result = {
'success': True,
'token': token
}
response = make_response(json.dumps(result))
response.headers["Content-Type"] = "application/json"
return response
阅读test/api_server.py文件,使用Flask框架搭建了一个api server。其中定义了两个变量,user_dict,token_dict。一个存储用户信息,另一个存储sn以及对应的token。
其中有用户增删改查的api以及用户获取token的api。