0


接口自动化测试框架

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

另外,现阶段流行推荐使用: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 进行购买商品,支付,以及查询用户购买订单状态


本文转载自: https://blog.csdn.net/mashang_zz/article/details/128448628
版权归原作者 阿里软件测试 所有, 如有侵权,请联系我们删除。

“接口自动化测试框架”的评论:

还没有评论