大家好,我是金鱼座,一个走在测试领域这片蓝海中, 蹉跎前行的技术渣渣,唯有一直走下去,也许能改变点什么,加油!
前面对小框架做了基本上介绍,下面来说明下如何使用apitestforhttp来开展一个项目的接口测试呢?
项目目录篇:
image.png如上图所示主要包含以下结构和内容
- project 项目根目录
- InitConf.ini 项目配置文件
- test_xxxxx.json 实际的测试json文件
一般情况下,登录成功的脚本case一般需要房子project的目录下,这样可以优先登录成功并提取相关登录信息给其他依赖权限的接口使用
初始化配置篇
image.png- 如果存在多数据库,需要在配置文件中,如上图所示按照DB1 DB2 DB3来进行设置
json编写篇
{
"name": "login_commuity_with_jack_中文",
"setup": {
"num1": 123,
"str1": "anc",
"fun1": "${__get_value(a=1, b=2)}",
"fun2": "${__get_value('success')}",
"str2": "jack2${str1}",
"fun3": "${__get_value(${num1}, '${str1}', '${str2}')}", # 注意1 方法参数化如果入参是字符串,需要加两个单引号
"path": "E:\\jackstudy\\test\\test_params.py",
"dict": {"a":"${str1}"},
"dict-list": {
"c" : "-${num1}" , # 注意2 对于字典或者列表中某一个value需要获取某一个int值转为str类型显示时,在前面加“-” or “~”
"a": "${num1}", # 注意4 对于字段为非确定数据类型, a会获取num1的自带int类型,b会自动获取str1中的str类型
"b": "${str1}",
"c": "abc${num1}",
"areaCodes": ["${num1}","${str1}","abc${num1}"],
"street": {"aa": "${num1}","bb": "${str1}"}
},
"list": ["A${num1}", 2] # 注意3 对于字典或者列表中某一个value中部分需要获取某一个int值转为str类型显示,框架会自动判断进行合并
},
"requestor":{
"url": "${host}/mccemv/mgr/api/auth/login",
"method": "POST",
"headers": {"Content-Type": "application/json"},
"data": "${dict-list}",
"files":{"image":"${path}"}
},
"validator": {
"assertEqCode": 299,
"assertEqHeaders": {"Content-Type": "application/json;charset=UTF-8"},
"assertEqStr": ["100000"],
"assertEqJson":{"success":true}
},
"collector":{
"json": {"token": "response.data.token"},
"methods": {"deleteid": "${__sql_select('${sql}', '${confpath}')}"},
"values":{"deleteid2": "${num1}"}
},
"teardown":{
"clear_cookies": "clearcookies",
"clearsession": "clearsession",
"cleartoken": "cleartoken"
}
}
参数化原则:
1 对于参数化后非确定类型,必须进行类型转换时, 需要在参数化标记$前增加一个“”-“” - 参考注意2
2 对于字典或者列表字段为str类型时,不需要做类型转换,框架会自动完成 - 参考注意3
3 对于字典或者列表中字段值为非确定数据类型,参数会保留参数化字段的原有type进行替换 - 参考注意4
4 对于方法类的str类型进行参数化时,需要人工确定传值是数值还是字符串,如果是字符串需要人工增加单引号 - 参考注意1
框架执行篇
命令行模式
image.png执行整个项目: python3 api_test.py -p E:\jackstudy\ApiTestForHttp\data\project
执行单个文件:python3 api_test.py -p E:\test_.json -cf E:\data\conf
报告生成篇
通过命令行执行报告后,查看执行窗口报告生成情况,如下图
image.png
框架report目录下报告如下:
image.png
欢迎各位体验,体验入口:https://github.com/jackyin2/ApiTestForHttp
网友评论