Skip to main content

No project description provided

Project description

接口自动化平台用例执行引擎 — ApiTestEngine

前言

ApiTestEngine主要是为接口自动化平台 开发的一个Http接口用例执行的引擎,其实之前开发的接口自动化框架apin也可以作为测试平台的用例执行引擎。但是apin最初设计的初衷是基于json或yaml文件来编写测试用例,里面设计了更多规则。用来进行平台开发反而有些笨重了,也不适合在课程中教学适用,于是在apin的基础写进行了精简和优化,开发了 ApiTestEngine这个更为精简和灵活的用例执行引擎。下面介绍一下ApiTestEngine的具体使用。

安装命令

pip install ApiTestEngine

一、用例执行函数

  • 用例执行入口函数为core.cases模块中的run_test,具体使用如下
run_test参数说明
  • case_data: 执行的测试数据
  • env_config:执行的环境配置
  • debug:是否为debug模式(单接口调试运行使用debug模式)
# 测试数据(详细结构说明看下一节)
case_data = [{},{}]
# 运行环境数据(详细结构说明看第三节)
config = {}
result = run_test(case_data=case_data, env_config=config, debug=False)

二、测试数据结构

下面详细介绍run_test执行测试的用例数据(case_data参数)的‘’

1、 测试数据基本结构

[
     {
     'name':"测试场景名称1"
     'cases':['用例数据1','用例数据2']
     },
     {
     'name':"测试场景名称2"
     'cases':['用例数据3','用例数据4']
     },
	......
]

执行的用例数据为list类型,列表中的元素为测试场景(dict类型),测试场景有两个字段,name和cases

  • name:测试场景的名称
  • cases:包含该测试场景下所有用例的列表

2、测试场景中测试用例的数据结构

注意:测试用例数据为一个字典,具体结构如下:

{
"title": "测试用例2",
"host": "http://httpbin.org/post",
"interface": {
 "url": "/post",
 "name": "登录",
 "method": "post",
 },
"headers": {
	'content-Type': "application/json"
	},
"request": {
 'json': {"mobile_phone": "${{user_mobile}}","pwd": "lemonban"},
	},
'setup_script': "print('前置脚本123')",
'teardown_script': "test.assertion('相等',200,response.status_code)"
}
用例字段说明:
  • title: 用例名称( 必填)
  • host: 测试接口的host地址 (非必填,如果没填则会使用全局的变量中的host)
  • interface:请求接口,字典类型(必填),包含三个字段:
    • name: 接口名(非必填)
    • url: 接口路径(必填)
    • method:请求方法(必填)
  • headers:请求头,字典类型(非必填,如果全局遍历中设置了请求头,则会将此处请求头和全局遍历请求头合并)
  • request:请求参数,字典类型(非必填,支持requests模块请求的所有字段),常用字段如下
    • data:传递表单参数(同requests模块的data)
    • json:传递json参数(同requests模块的json)
    • params:传递查询参数(同requests模块的params)
    • 提示: 其他requests模块中支持的字段这里都支持
  • file:上传文件,参数具体格式如下
    # { "参数名": ["文件名", "文件路径", "文件类型"]}
    {
        "name": ["19.png", r"./image/19.png", "image/png"]
    }
    
  • setup_script:用例前置脚本,字符串类型(具体使用参照第五节)
  • teardown_script:用例后置脚本,字符串类型(具体使用参照第五节)

3、用例中引用全局遍历

在测试数据的header、interface,requests中可以引用遍历

变量引用语法:$ {{变量名}}
"request": {
    'json': {"mobile_phone": "${{user_mobile}}","pwd": "lemonban"},
	}
# 说明:上面requests的json参数中引用了变量 user_mobile

三、环境数据说明

环境数据一共包含三个字段:ENV,DB,global_func

1、ENV : 全局变量,字典类型(必填项),存放全局的host,headers,自定义的全局变量,
2、DB:数据库配置对象,列表类型(必填项),支持同时连接多个数据库服务,每个连接为列表中的一个元素,连接配置信息如下
{
"name": "aliyun",
"type": "mysql",
"config": {
    "user": "future",
    "password": "123456",
    "host": "api.lemonban.com",
    "port": 3306
    }
}
  • name: 连接名(字符串,只能用英文),在用例脚本可以通过db.连接名.去执行sql语句(参照前后置脚本)
  • type:数据库类型(目前仅支持mysql数据库,可以自己扩展开发)
  • config:数据库连接信息,字典类型,字段如下
    • user :账号
    • password: 密码
    • host: 数据库的host地址
    • port:数据库的端口

3、global_func:全局工具函数(字符串)

  • 建议:在进行平台在开发时,将global_func设置问大文本字段,前端编辑完,后端直接存在数据库,执行用例时读取出来传入即可

四、全局工具函数说明

global_func中定义的全局函数,在用例的前后置脚本中可以直接调用,调用方式如下

# 调用全局工具函数random_mobile生成手机号码

mobile = global_func.random_mobile()

五、前后置脚本

为了让用户 更方便的去编写前后置脚本进行测试,框架本身也预设了一些变量和一些方法

1、脚本中预置的对象:

ENV:全局变量
env:临时变量
response:请求响应对象(后置脚本可以访问)

2、脚本中预置的方法

test.re_extract: 正则提取数据
参数1:数据源(str类型)
    参数2:提取表达式
test.json_extract:jsonpath提取数据
参数1:数据源(dict类型 or list类型)
    参数2:提取表达式
test.save_global_variable:设置全局变量
参数1:变量名
    参数2:变量值
test.save_env_variable:设置临时变量
参数1:变量名
    参数2:变量值
test.delete_global_variable:删除全局变量

参数:变量名

test.delete_env_variable:删除临时变量
参数:变量名
test.assertion:断言方法
参数1:断言方法
    参数2:预期结果
    参数2:实际结果

如果以上内置的方法不能满足需求,可在全局的工具函数中定义相关的方法,在脚本中调用。

关于ApiTestEngine的基本使用就给大家介绍到这里啦,大家可以去研究一下,用来编写测试平台

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ApiTestEngine-1.0.3.tar.gz (11.1 kB view hashes)

Uploaded Source

Built Distribution

ApiTestEngine-1.0.3-py3-none-any.whl (13.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page