🔥 交流讨论:欢迎加入我们一起学习!
🔥 资源分享:耗时200+小时精选的「软件测试」资料包
🔥 教程推荐:火遍全网的《软件测试》教程
📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
一、一张图表告诉你接口自动化框架有哪些,他们之间有何区别:
另外,现阶段流行推荐使用:Python+unittest+requests+HTMLTestRunner框架
二、Java Rest-assured框架:
Java Rest-assured 是使用代码来实现接口的请求,封装业务流程,对于公司的业务支持比较高,灵活度很强,可以通过代码的方式打造自己公司的接口自动化框架,上手有点难度,需要有Java 编程基础,才可以使用。
三、python+ Request框架:
python+ Request 是使用代码来实现接口的请求,封装业务流程,对于公司的业务支持比较高,可以根据业务的灵活度来定制化开发接口框架,再加上Jenkins 就可以持续化集成。上手有点难度,需要有Python 编码的基础,才可以使用。
四、Robot Framework框架:
Robot Framework是一款python编写的功能自动化测试框架。具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试驱动开发(ATDD),支持python,java等编程语言(百度百科)。功欲善其事必先利其器,在学习RF之前同样需要搭建开发环境,包括运行环境的搭建,web自动化测试环境的搭建,所以今天会讲解3种RF测试环境的搭建--RIDE,Pycharm及Eclipse,你可以根据自己的喜好选择使用哪种环境做RF自动化测试 。
1、它的优点
参考用户手册,简单介绍下Robot Framework 产品的特点
- 容易编写测试用例,尤其是通过ride_small.exe 工具建立测试用例。
- 具有关键字多次封装功能,具体是指可以在已有的关键字基础上,创建新的关键字,新的关键字是原有关键字的组合
- 输出HTML 格式的日志和测试结果
- 不依赖平台、应用。
- 可以采用 Python 或 Java 编写库文件
- 提供命令行工具和XML 输出文件
- 支持 Seleniumweb testing, Java GUI testing, running processes, Telnet, SSH等。
- 支持创建数据驱动测试用例
- 支持变量定义及应用
- 支持 通过 标签 筛选和执行测试用例
- 易于集成;测试套件为文件或文件夹,使得这样可以和代码版本一同集成
- 支持测试用例或测试套装级别的 setup 和 teardown
- 模块化结构使得Robot Framework 支持多种接口的应用测试
2、它的缺点:
接口测试用例写起来不简洁。
需要掌握特定语法。
*** Settings ***
Library RequestsLibrary
Library Collections
*** Test Cases ***
test_get_event_list # 查询发布会(GET请求)
${payload}= Create Dictionary eid=1
Create Session event http://127.0.0.1:8000/api
${r}= Get Request event /get_event_list/ params=${payload}
Should Be Equal As Strings ${r.status_code} 200
log ${r.json()}
${dict} Set variable ${r.json()}
#断言结果
${msg} Get From Dictionary ${dict} message
Should Be Equal ${msg} success
${sta} Get From Dictionary ${dict} status
${status} Evaluate int(200)
Should Be Equal ${sta} ${status}
总结:不考虑,没人愿意这么写接口用例。
五、HttpRunner框架:
HttpRunner:是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。采用 YAML/JSON 的形式描述测试场景,保障测试用例描述的统一性和可维护性。借助辅助函数(debugtalk.py),在测试脚本中轻松实现复杂的动态计算逻辑。支持完善的测试用例分层机制,充分实现测试用例的复用。测试前后支持完善的 hook 机制。响应结果支持丰富的校验机制。基于 HAR 实现接口录制和用例生成功能(har2case)。结合 Locust 框架,无需额外的工作即可实现分布式性能测试。执行方式采用 CLI 调用,可与 Jenkins 等持续集成工具完美结合。测试结果统计报告简洁清晰,附带详尽统计信息和日志记录。极强的可扩展性,轻松实现二次开发和 Web 平台化
操作或运行流程
1.先安装Python,建议使用 Python 3.4 及以上版本。
2.$ pip install httprunner安装HttpRunner
3.抓包分析:
通过抓包,看具体的接口信息,包括请求的URL、Method、headers、参数和响应内容等内容
生成测试用例:将抓取得到的数据包导出为 HAR 格式的文件。然后,使用 har2case 转换脚本,命令:$ har2case docs/data/demo-quickstart.har -2y
如图:
config 为全局配置项,作用域为整个测试用例,teststep对应单个测试步骤,作用域仅限于本身
5.调整校验器和参数关联,参数化(抽取公共变量和变量的申请和引用)
6.运行:运行测试用例的命令为hrun,后面直接指定测试用例文件的路径即可。
$ hrun tmarketTest\testcases\adminlogin.yml
.测试报告:
log详情:
发送报告至邮箱:
优点:1.接口用例可通过har文件录制转换得到,也可自己定义。
2.测试用例和代码的分离,可复用性和可维护性较高,适应不同的测试环境。
3.可扩展性好,可根据需求,更改源码二次开发。
4.断言灵活,返回结果清晰
缺点:1.开发时间比较短,技术不够成熟.
2.有很多不支持的功能,需要使用python代码实现.
六、 Postman+Newman+Jmeter+Ant框架:
postman做接口测试简单易用很容易上手,但是接口越来越多,每次手动点击runner进行测试不灵活,最近就研究了下newman,利用newman实现接口的自动化测试,但是每次需要命令行操作也不方便,就想着利用Jenkins做真正的自动化测试,刚好部门有现成的Jenkins环境就用了起来,目前已经实现了接口的自动化测试。postman导出的json文件直接上传git,Jenkinsjob配置git路径,每次只要点击下job就可以进行接口测试或者有新的接口更新也会实现自动化测试,同时可以发送邮件告知同事测试结果,非常方便。
环境配置
1、安装postman:Google插件下载或者postman应用下载,很简单,不说了
2、安装newman:
第一步,安装nodejs。很简单,之前的appium使用中有讲过,感兴趣的可以自己去看,这里不再赘述。
第二步,在nodejs命令行安装newman,即命令行输入如下命令:
npm install -g newman
3、安装Jenkins:下载war包或者zip包安装都可以,具体在之前的sonarqube持续化有讲过,这里不再赘述。
环境配置完成就可以进行json文件的导出了。
postman接口文件导出
为了满足能够同时运行所有的API及只运行指定的API集合,在postman中创建一个collection,里面包含多个folder,具体好处后面便知。
点击collection右侧的。。。按钮,选择Export,弹框中选择Export按钮,就可以把collection中的内容导出到本地,存为json格式的。
这里为了切换环境方便及变量使用方便,我配置了环境变量及全局变量,为了能在newman中运行起来,环境变量及全局变量也要导出,具体如下:
点击postman右侧的设置按钮,选择manage Environments,点击环境变量后面的下载按钮,即可将环境变量导出,导出的格式为json类型。
同样,点击manage Environments页面中的Global,点击Download as JSON按钮,即可导出全局变量
相关的文件数据导出后就可以在newman中进行验证性测试了。
Newman的使用
1、本地运行自动化测试命令:
newman -c C:\Users\hexueqin\Desktop\serverApiTest.postman_collection.json----这种写法已经废弃,但是用还是可以用的,不过还是用最新的好,否则Jenkins上会报错。
2、生成测试报告,支持html,xml,json,cli4种。
newman run C:\Users\hexueqin\Desktop\serverApiTest.postman_collection.json --reporters html,junit --reporter-html-export d:\html01.html --reporter-junit-export d:\xml01.xml
3、含有环境变量,全局变量的自动化测试命令:指定执行对应的folder
常见命令:
run --运行newman的命令
-e 加载环境变量的数据
-g 加载全局变量的数据
-n case运行次数,默认运行次数为1次
--folder 运行collection中的指定folder
--reporters html,junit 指定生成报告的类型
newman run C:\Users\hexueqin\Desktop\apiTest.postman_collection.json -e C:\Users\hexueqin\Desktop\dev-environment.postman_environment.json -g C:\Users\hexueqin\Desktop\globals.postman_globals.json --folder visitApi --reporters html --reporter-html-export d:\result.html
本地运行结果显示:
注意:如果指定生成报告,就不显示具体的请求执行及结果。
本地生成HTML文件的查看:
Jenkins中job配置及运行
1、新建job,名字自己取即可
2、配置脚本:(需要在Jenkins服务器本地安装newman程序)
3、添加HTML报告:
4、运行job后查看报告:
自此,postman自动化测试可以顺利的跑起来了,邮件暂时没有添加,具体添加可以参考sonarqube中的配置。
七、Vue+Flask&Django框架:
Vue+Flask 搭建自己公司的接口测试平台,可以自由定制化自己公司的业务,实现公司特殊的需求,接口测试平台,对于测试的开发能力有要求,前端 Vue ,后端 Flask & Django 框架,代码能力要求高,前后端的技术都需要懂。
八、Python+unittest+requests+HTMLTestRunner框架(推荐使用):
利用现有的框架和库自己定制:Unittest+Request+HTMLRunner
1、它的优点:
足够灵活强大: 分层测试、数据驱动、测试报告,集成CI...
2、它的缺点:
有一定的学习成本
数据文件:
{
"test_case1": {
"key": "value1",
"status_code": 200
},
"test_case2": {
"key": "value2",
"status_code": 200
},
"test_case3": {
"key": "value3",
"status_code": 200
},
"test_case4": {
"key": "value4",
"status_code": 200
}}
测试用例:
import requests
import unittest
from ddt import ddt, file_data
@ddtclass InterfaceTest(unittest.TestCase):
def setUp(self):
self.url = "http://httpbin.org/post"
def tearDown(self):
print(self.result)
@file_data("./data/test_data_dict.json")
def test_post_request(self, key, status_code):
r = requests.post(self.url, data={"key": key})
self.result = r.json()
self.assertEqual(r.status_code, status_code)
总结:推荐使用,代码相对简单,功能足够灵活。
九、总结:
1、对于单接口,变化不多的可以使用 Postman、 Jmeter、HttpRunner框架就可以满足了,需要多个接口组合满足于一些场景的,需要自己编写代码来实现了 比如:
登录,提取token,查询商品ID 订单ID 进行购买商品,支付,以及查询用户购买订单状态
最后我邀请你进入我们的【软件测试学习交流群:785128166】, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路
作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:程序员二黑】自提!