接口自动化测试(四):Helloworld入门

一、准备工作

需要做接口测试,肯定得需要一个已调通的接口或服务,在这里我们暂时就只考虑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
说明:?后面部分是参数
响应结果返回的是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、创建URL
            URL 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呢,那该怎么实现?上面只是拿到响应结果,怎么跟预期结果对比校验呢?是不是还有很多问题……别急!学习要循序渐进,这些疑问在后面会陆续解答。

【下章节预告】:接口自动化测试(五):Http框架搭建

原文来自下方公众号,转载请联系作者,并务必保留出处。
想第一时间看到更多原创技术好文和资料,请关注公众号:测试开发栈

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,598评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,482评论 25 707
  • 1、大胤水师统辖于兵部,最高指挥机构是水师大都督府,设水师大都督一名,邻大将军衔,爵位视具体战功而定。现任水师大都...
    法痴l阅读 522评论 0 0
  • 或许在很久之前也有一个时代叫剑魔的时代,但是在现在……少啊,基本上打十局,甚至更多的局,一局剑魔都看不见。 剑魔不...
    黄铜刀阅读 7,378评论 0 0
  • 这几天看了iOS组件化构架的几篇文章, 这里引用几篇文章供大家循序渐进的学习. 理解篇:bang神的逐步分析: h...
    Leopx阅读 264评论 0 0