热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

软件测试的那些事之接口自动化测试(四):Helloworld入门

一、准备工作需要做接口测试,肯定得需要一个已调通的接口或服务,在这里我们暂时就只考虑HTTP的接口吧。由于是练习,大家可以在自己的应用系

一、准备工作

需要做接口测试,肯定得需要一个已调通的接口或服务,在这里我们暂时就只考虑HTTP的接口吧。由于是练习,大家可以在自己的应用系统中通过Fiddler抓取请求url,其实这个url就可以近似看作是一个接口的地址;或者在网上找一个公开的API,基于这个API来做试验。
1、F12抓取请求url
对于Web系统,我们可以通过浏览器的调试工具直接获取到请求url,比如chrome和IE的F12,Firefox的firebug等等,对于移动端应用,可以通过Fiddler等抓包工具获取请求url。
如下图,获取简书个人主页的关注接口URL,可以通过Chrome的F12来获取(按键盘F12,打开调试工具,操作页面,查看newwork页签的请求地址):

Chrome F12


这样我们就可以将url拷贝出来:
url:http://www.jianshu.com/notifications?type=follows&page=1
说明:?后面部分是参数(免费领取自动化测试学习资料,工具,加qq群,1140267353,)
响应结果返回的是json格式的数据:

 

挖个坑:这个url在未登录简书时,是请求不到预期结果的,那么接口测试如何跳过登录验证?先挖个坑在这里,后面章节专门来讲。

2、Fiddler抓取请求url
Fiddler等抓包工具不仅可以抓Web应用的请求,还可以抓移动端应用的请求(用法:打开Fiddler后,在浏览器的操作,对应的请求记录都会在Fiddler中显示,移动端需要额外设置下Fiddler和手机代理),Fiddler会比较直观的列出请求的域名、url、状态、请求信息、响应结果等信息,如下图:

fiddler

 

(对于Fiddler的基础用法还不熟悉? 可以百度找教程看,基础的用法很简单的,相信要进入到接口自动化测试的童鞋,这个基础肯定都有了吧)

3、找一个公开的API
考虑到有些童鞋可能之前没基础,一下子搞一个要登录的接口,有点懵,另外也可能没有注册简书,用简书的API也不太方便,所以还是要找一个不用登录的公开API。随便google了一下,找到了一个比较稳定的查询人民币近期汇率的接口:http://api.fixer.io/latest?base=CNY,在浏览器中请求下,看下效果:

 

二、进入正题

首先对于接口自动化测试,我们要和利用接口工具请求接口测试区分开来,既然是自动化测试,那么肯定是要用代码的方式去实现接口请求与响应结果验证这整个过程,不然找个接口工具就可以去验证了。
1. 新建Maven项目
使用eclipse还是IDEA?无所谓,习惯哪个用哪个,两者大同小异。

 

2. 配置Maven pom.xml,添加依赖
这一步这一章节可以省略,因为用的是java.net相关工具类来实现http请求,所以暂时无需导入其他依赖包。

3. 新建package及测试类
项目结构如下图:


4. 代码实现
具体的代码实现步骤我在代码中都加了很详细的注释,大家直接看代码就行了。

package com.alany.test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;/*** @date: 2017年12月4日* @author: alany**/public class ApiRequestTest {public static void main(String[] args){String url = "http://api.fixer.io/latest?base=CNY";try {//1、创建URLURL reqUrl = new URL(url);//2、打开和URL之间的连接URLConnection connection = reqUrl.openConnection();//3、设置通用的请求属性,可选connection.setRequestProperty("accept", "*/*");connection.setRequestProperty("connection", "Keep-Alive");connection.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36");//4、建立连接connection.connect();//5、获取响应结果BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));StringBuilder response = new StringBuilder();String line;while ((line = in.readLine()) != null) {response.append(line);}System.out.println(response.toString());//6、用完了记得关闭输入流in.close();} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}

5. 测试运行
运行一下看下结果:

{"base":"CNY","date":"2017-12-01","rates":{"AUD":0.19978,"BGN":0.24898,"BRL":0.49425,"CAD":0.19479,"CHF":0.14883,"CZK":3.2494,"DKK":0.94741,"GBP":0.11218,"HKD":1.1821,"HRK":0.96183,"HUF":39.949,"IDR":2047.5,"ILS":0.52828,"INR":9.7586,"JPY":17.021,"KRW":163.91,"MXN":2.8254,"MYR":0.61896,"NOK":1.2572,"NZD":0.22086,"PHP":7.6222,"PLN":0.53633,"RON":0.58949,"RUB":8.8728,"SEK":1.2665,"SGD":0.20387,"THB":4.937,"TRY":0.59475,"USD":0.1513,"ZAR":2.0739,"EUR":0.12731}}

ok,普通的get接口请求就这样实现了,上面实现的get请求方式,要是是post呢,那该怎么实现?上面只是拿到响应结果,怎么跟预期结果对比校验呢?是不是还有很多问题……别急!学习要循序渐进,这些疑问在后面会陆续解答。

最后

俺叫小枫,一个成天想着一夜暴富的测试员

(1140267353)一起成长一起加油的伙伴群!软件测试,与你同行!
群内可领取小枫给大家准备的最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!

点赞评论关注不迷路!!!【三连?】,有问题也可私聊哟~(*?▽?*)


推荐阅读
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • 本文介绍了在Windows环境下使用pydoc工具的方法,并详细解释了如何通过命令行和浏览器查看Python内置函数的文档。此外,还提供了关于raw_input和open函数的具体用法和功能说明。 ... [详细]
  • 在维护公司项目时,发现按下手机的某个物理按键后会激活相应的服务,并在屏幕上模拟点击特定坐标点。本文详细介绍了如何使用ADB Shell Input命令来模拟各种输入事件,包括滑动、按键和点击等。 ... [详细]
  • 本文旨在介绍一系列提升工作效率的浏览器插件和实用小工具,帮助用户在日常工作中更加便捷高效。内容由原作者授权发布。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 本文详细介绍了Java中org.w3c.dom.Text类的splitText()方法,通过多个代码示例展示了其实际应用。该方法用于将文本节点在指定位置拆分为两个节点,并保持在文档树中。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • 本次考试于2016年10月25日上午7:50至11:15举行,主要涉及数学专题,特别是斐波那契数列的性质及其在编程中的应用。本文将详细解析考试中的题目,并提供解题思路和代码实现。 ... [详细]
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
  • CentOS系统安装与配置常见问题及解决方案
    本文详细介绍了在CentOS系统安装过程中遇到的常见问题及其解决方案,包括Vi编辑器的操作、图形界面的安装、网络连接故障排除等。通过本文,读者可以更好地理解和解决这些常见问题。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 整合百度UEditor编辑器于ASP后端的实现步骤与技巧
    随着微软停止对XP系统的支持,公司已全面升级至Windows 7。早期网站创建时使用的编辑器仅兼容IE6浏览器,而如今系统更新后,原有的编辑器已无法满足新环境的需求。本文详细介绍了如何将百度UEditor编辑器整合到ASP后端,包括实现步骤和实用技巧,确保网站在新系统下仍能高效运行并提供良好的用户体验。 ... [详细]
  • 导读:今天编程笔记来给各位分享关于PHP的前端用什么工具的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: ... [详细]
author-avatar
百变精灵1980
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有