30行左右代码实现一个类似httprunner的接口框架

框架的最终归宿往往是领域语言+模板解析。

首先先约定一种所要执行操作的表述格式。然后通过模板解析将描述语言转化为代码进行执行。例如,我们可以使用以下yaml文件描述多个步骤并且需要关联的接口:

apis.yaml:

- name: 获取百度token接口 # 接口名称

request: # 请求报文

url: https://aip.baidubce.com/oauth/2.0/token

method: get

params:

grant_type: client_credentials

client_id: kPoFYw85FXsnojsy5bB9hu6x

client_secret: l7SuGBkDQHkjiTPU3m6NaNddD6SCvDMC

extract: # 提取变量, 字典格式

token: RESPONSE.json()['access_token'] # RESPONSE系统变量,代表响应对象

- name: 百度ORC接口 # 第二个接口

request:

url: https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=${token} # 使用变量

method: post

data: # 请求体(表单格式)

url: http://upload-images.jianshu.io/upload_images/7575721-40c847532432e852.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240

verify: # 断言, 列表格式

- RESPONSE.json()['words_result_num'] == 6

其中,name为该接口或步骤的名称描述,request段是接口的信息,对应requests.request()的每一个参数,url和method是必要参数,params,headers,cookies,data, json,files,timeout等,并使用对应格式。extract用于提取值, token: RESPONSE.

联系作者longtestyan