接口测试新姿势-1

前提

以往的接口测试大多使用两种方式:

1.工具类(PostMan/Jmeter)

2.代码类(Python+Request)

对于1来说,虽然入门等级低,但是填写参数较为麻烦,且因参数类型的不同,经常出现填错的情况。

file

对于2来说,需要有代码基础,贵在灵活,但需要经常维护代码。新增一个接口即需要添加用例。

结合两者优点,接口测试新框架应用而生。

介绍

file

-config(配置)

-database(测试用例)

-db_fixture(测试引擎)

-lib(逻辑处理)

-log(日志)

-mock(虚拟服务器)

-report(测试报告)

-README.md(项目介绍)

-run_test_api.py(用例执行入口)

-requirements (依赖包)

使用说明

环境准备

1.执行前确保 已安装所有依赖库:

1.1 拷贝工程至新环境,切换到工程根目录下cmd:

1.2 pip install -r requirements.txt 一次性安装所有依赖库

2.使用Pycharm打开,配置执行tool为Pytest

3.配置Allure环境依赖

参考http://bbs.apehorde.com/blog/articles/226

调试说明

1.用例填写,参考database/demo.xlsx
file

​ 1.1 表格设置: 单元格格式为文本

​ 1.2 data中数据为字典格式,若需调用函数,则使用 ${fun_name(parameters)}

       {"user_agent":"I",
       "device_sn":"98563",
       'sign': "${gen_random_string(12)}"}

​ 1.3 result 中格式为字典或列表格式,若需完整匹配响应,则直接填写字典格式;若需分别校验字段时,则使用dict in list 格式,key值为校验函数(参考lib/utils.py中get_uniform_comparator(comparator)方法)value值为[校验项,期待值]。

# dict
{'code': 205, 'message': '请输入正确手机号'}

# dict in list
["{'eq': ['status_code', 201]}","{'eq': ['resp_body_success', True]}"]

# 层级嵌套
'''
json_content = {
            "person": {
                    "first_name": "Leo",
                    "last_name": "Lee",
                },
                "cities": ["Guangzhou", "Shenzhen"]
            }
    @param (str) query
         "person.first_name"  =>  "Leo"
         "person.cities.0"    =>  "Guangzhou"
'''
["{'eq': ['person.first_name', 'Leo']}"]

2.项目适配

2.1 根据项目需要,在lib/utils.py 中添加所需方法,在config/conf.py中添加或修改本项目相关配置

2.2 若请求有公共部分,可在lib/RequestHandler.py 中自行适配

3.测试范围

根据需要在config/conf.py 中修改test_scope值即可。

# 测试集范围,None为全部执行,列表中为执行对应下标sheet页
test_scope = None # 全部执行
test_scope = [0,1] # 执行第一和第二个sheet中用例

4.mock的使用

使用flask搭建mock_server,可做到“开发未动,测试先行”。不必等到开发完成接口,在接口文档就绪时,即可根据文档搭建mock_server,构建接口的请求与返回。有mock_server后即可验证进行框架的适配或校验。

先启动api_server.py,再进行校验。

解决痛点

1.实现业务与逻辑代码分开,全员可参与:自动化人员可根据项目需求扩展所需函数,业务人员可在测试用例中直接填写接口测试相关参数

2.无需区别请求参数格式,对照规则填写即可

3.代码改动量小,只需维护项目所需函数,无需更改用例代码

4.报告清晰

file

源码地址

源码可至以下地址获取:
http://172.16.0.209:8000/project/

讨论数量: 1

这么好的框架,值得推广!问下,附件上传的功能是怎么解决的。

3年前

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!