接⼝⾃动化测试各种框架的介绍与对⽐
⼀、⼀张图表告诉你接⼝⾃动化框架有哪些,他们之间有何区别:
另外,现阶段流⾏推荐使⽤:Python+unittest+requests+HTMLTestRunner框架
⼆、Java Rest-assured框架:
Java Rest-assured 是使⽤代码来实现接⼝的请求,封装业务流程,对于公司的业务⽀持⽐较⾼,灵活度很强,可以通过代码的⽅式打造⾃⼰公司的接⼝⾃动化框架,上⼿有点难度,需要有Java 编程基础,才可以使⽤。
三、python+ Request框架:
python+ Request 是使⽤代码来实现接⼝的请求,封装业务流程,对于公司的业务⽀持⽐较⾼,可以根据业务的灵活度来定制化开发接⼝框架,再加上Jenkins 就可以持续化集成。上⼿有点难度,需要有Python 编码的基础,才可以使⽤。
四、Robot Framework框架:
官⽹介绍机器⼈框架是⼀个通⽤的开放源码⾃动化框架,⽤于验收测试、验收测试驱动开发(ATDD)和机器⼈过程⾃动化(RPA)。它具有易于使⽤的表格测试数据语法,并利⽤关键字驱动的测试⽅法.它的测试功能可以通过⽤Python或Java实现的测试库来扩展,⽤户可以使⽤与创建测试⽤例相同的语法从现有的测试库中创建新的更⾼级别的关键字。
1、它的优点:
(1)关键字驱动,⾃定义⽤户关键字。
(2)⽀持测试⽇志和报告⽣成。
(3)⽀持系统关键字开发,可扩展性好。
(4)⽀持数据库操作。
2、它的缺点:
接⼝测试⽤例写起来不简洁。
需要掌握特定语法。
*** Settings ***
Library    RequestsLibrary
Library    Collections
*** Test Cases ***
test_get_event_list    # 查询发布会(GET请求)
${payload}=    Create Dictionary    eid=1
Create Session    event    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 脚本,即可实现⾃动化测试、性能测试、线上监控、持续集成等多种测试需求,⽹址:/ 官⽹已经有很详细的介绍。
1、它的优点:
基于YAML/JSON格式,专注于接⼝本⾝的编写。
接⼝编写简单
⽣成测试报告
前端测试和后端测试的区别接⼝录制功能。
2、它的缺点:
没有编辑器插件对语法校验,容易出错。
官⽅⽂档没有详细的说明。
扩展不⽅便。
[
{
"config": {
"name": "testcase description",
"variables": [],
"request": {
"base_url": "127.0.0.1:5000",
"headers": {
"User-Agent": "python-requests/2.18.4"
}
}
}
},
{
"test": {
"name": "test case name",
"request": {
"url": "/api/get-token",
"headers": {
"device_sn": "FwgRiO7CNA50DSU",
"user_agent": "iOS/10.3",
"os_platform": "ios",
"app_version": "2.8.6",
"Content-Type": "application/json"
},
"method": "POST",
"date": {"sign": "958a05393efef0ac7c0fb80a7eac45e24fd40c27"}
},
"validate": [
{"eq": ["status_code", 200]},
{"eq": ["headers.Content-Type", "application/json"]},
{"eq": ["content.success", true]},
{"eq": ["ken", "baNLX1zhFYP11Seb"]}
]
}
}]
总结:可以考虑,⾄于接⼝数据的初始化可能需要单独处理。
六、Postman+Newman框架:
postman + Newman  + Jenkins 实现接⼝⾃动化框架,postman ⽅便⽇常的调试,⾮常的⽅便,测试的断⾔,设置前置条件,环境变
量,response 参数提取⾮常⽅便,我在⽇常⼯作中经常使⽤ postman进⾏接⼝的调试。postman⾼级的功能可以付费进⾏定制化,官⽹⽂档地址: postman/docs/
七、Jmeter+Ant框架:
Jmeter可以做于接⼝⾃动化⼯具,也可以⽤于性能测试,在性能测⽅⾯很强⼤,⼤家可以去了解。
1、它的优点:
⽀持参数化
不需要写代码
2、它的缺点:
创建接⼝⽤例效率不⾼。
不能⽣成查看每⼀个接⼝执⾏情况的测试报告。
总结:不考虑,接⼝编写不⽅便,最主要是不能⽣成测试报告,如果做接⼝性能的话可以考虑。
⼋、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 = "/post"
def tearDown(self):
sult)
@file_data("./data/test_data_dict.json")
def test_post_request(self, key, status_code):
r = requests.post(self.url, data={"key": key})
self.assertEqual(r.status_code, status_code)
总结:推荐使⽤,代码相对简单,功能⾜够灵活。
⼗、总结:
 1、对于单接⼝,变化不多的可以使⽤  Postman、 Jmeter、HttpRunner框架就可以满⾜了,需要多个接⼝组合满⾜于⼀些场景的,需要⾃⼰编写代码来实现了⽐如:
  登录,提取token,查询商品ID 订单ID 进⾏购买商品,⽀付,以及查询⽤户购买订单状态
 2、对于⼀些业务场景涉及多个接⼝的,需要使⽤代码的⽅式来查询接⼝需要的前置信息,如 token,商品ID,订单ID,订单状态,以实现业务场景的接⼝功能测试。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。