接口自动化测试各种框架的介绍与对比

时间:2024-02-25 21:44:53

一、一张图表告诉你接口自动化框架有哪些,他们之间有何区别:

另外,现阶段流行推荐使用: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    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 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求, 网址:https://cn.httprunner.org/ 官网已经有很详细的介绍。

1、它的优点:

基于YAML/JSON格式,专注于接口本身的编写。

接口编写简单

生成测试报告

接口录制功能。

2、它的缺点:

没有编辑器插件对语法校验,容易出错。

官方文档没有详细的说明。

扩展不方便。

[

{

"config": {

"name": "testcase description",

"variables": [],

"request": {

"base_url": "http://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": ["content.token", "baNLX1zhFYP11Seb"]}

]

}

}]

总结:可以考虑,至于接口数据的初始化可能需要单独处理。

六、Postman+Newman框架:

postman + Newman  + Jenkins 实现接口自动化框架,postman 方便日常的调试,非常的方便,测试的断言,设置前置条件,环境变量,response 参数提取 非常方便,我在日常工作中经常使用 postman进行接口的调试。postman高级的功能可以付费进行定制化,官网文档地址: https://learning.getpostman.com/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 = "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 进行购买商品,支付,以及查询用户购买订单状态
 2、对于一些业务场景涉及多个接口的,需要使用代码的方式来查询接口需要的前置信息,如 token, 商品ID,订单ID,订单状态,以实现业务场景的接口功能测试。