最近发现做接口测试的朋友越来越多了,打算写一个系列的rf+requests做接口测试(主要是Http接口)的文档,可以帮助新入门的同学对接口测试有个大概的了解,同时也是敦促自己做总结的一种手段。希望经验丰富的大神路过时,如发现我文档中的不足,提出中肯的批评及更好的解决思路。以期共同进步。
 
一、环境准备

1)默认已经安装robotframework
2)默认已经安装requests库
3)默认已经安装并成功导入RequestsLibrary
4)会用抓包工具,fiddler或Charles都可

用这个库做接口测试,希望用户本身对这个库有一定的了解,如果不了解,那么我们来叨一叨选择的理由。
1)Python的requests库号称是“HTTP for Humans”,它提供了非常方便且人性化的接口调用方法,上手快,功能强大且完美,甩同类库urllib2, httplib好几条街。国外网友的使用心得大多是,呵呵呵呵,用requests库十几行代码,把以前的几百行代码重构了。缺点是封装了太多层,不利于http底层原理的理解。中文版用户指南:http://docs.python-requests.org/zh_CN/latest/user/quickstart.html 
2)RequestsLibrary是基于requests模块做的RF库,其根基本身就强大,再加上git上有一些大神一直在对其进行持续地更新及维护,提供了很不错的官方Demo,从使用人数来说,也是完爆那些HTTPLibrary之流,意味着遇到问题得到解答的机会更大。Git地址:https://github.com/bulkan/robotframework-requests/
 
二、Http接口测试初窥
这一节要写一个get请求的例子,强烈推荐使用官方Demo入门,并且建议新老用户都熟悉Demo的每一个细节,对,是每一个细节。笔者当初多走了许多弯路,对这个细致的Demo相见恨晚,每次都温习demo而后知耻。。
第一个栗子:假如有个这样的get请求:https://api.github.com/users/bulkan,抓包

可以看出,这个接口请求中:
协议:  https
访问的host: api.github.com
root url(基础url): https://api.github.com
相对uri: /users/bulkan
method: get
传输参数: 无
该抓包其对应的测试用例如下:

对应到用例,第一步创建一个到https://api.github.com的session,取个很容易认的别名github,第二步,使用get方法,访问别名为github的相对路径/users/bulkan。第3,4步断言返回数据。
对于前面两步,直接使用requests.get方法可以一步完成,为什么要强制拆成两步呢。可以大概揣测一下作者的意图:
1、使用别名,会使后面的请求写起来更顺手,用例也比较好看,大部分时候访问同一地址的请求,不需要重复创建session  
2、session的使用,可以实现跨请求保持一些cookie,这个功能才是session的重头戏。

Get request的好基友是post request,也是非常基础的必须掌握的一种请求方式,这个我就不写了。官方Demo几乎列出了所有可能出现的get 及post请求的例子,非常经典,实际项目中都能从里面找到原型。另外还有一些不常见的请求方式如head, put, delete等,也有例子。

三、如何开始你的接口测试第一步
首先,你得有项目组完善且规范的接口文档。好吧,大部分的中小公司的宝宝会说啥文档也没有。也可以通过抓包来开始做项目的接口demo,在无须外力的因素下迈出第一步,但是单凭抓包是抓不全的,所以最终实施前还是得搞来一份完整的接口文档,才能保证用例的覆盖。
单有接口文档也是不够的,还要学会如何抓包,抓包后知道如何解剖一个请求,重点关注请求的method, url, request header, request body, cookie, response header, response body等,还是那句话,办法永远比问题多,培养好的观察能力和解决问题能力无比重要。

使用robotframework做接口测试之一——准备工作的更多相关文章

  1. 使用robotframework做接口测试5——一个用例中调多个接口

    凡是涉及一点点有接口关联的,都可能下一个接口需要上一个接口的某个返回值作为入参,最直接的例子,就是登录依赖.用接口做业务性的测试,也绝对离不开接口依赖的,业务都是一系列接口串联的结果,有时候一个接口操 ...

  2. 使用robotframework做接口测试4——搞定接口签名及密码加密

    接口签名是我做接口测试撞到的第一块石头,刚到新公司,本来想默默憋出来一个大招,然后碰到了签名接口,直接给跪了.于是只好找开发哥哥帮忙,把签名算法的java文件拿到,一行行对着用python实现了一遍. ...

  3. 使用robotframework做接口测试二——处理响应数据

    初使用RequestsLibrary做接口测试时,你会不会感到困惑,为什么会有${resp.content}, ${resp.status_code}这样的写法,这个status_code什么鬼,f5 ...

  4. 使用robotframework做接口测试三——保持登录状态

    调用登录接口登录了,其他的接口怎么保持登录状态呢?  首先来看一看,web端或者说客户端是怎么样用cookie/token等保持登录状态的.一般来说,cookie都会在登录接口由服务端返回,而且会是在 ...

  5. 使用Robot Framework做接口测试

    http://chuansong.me/n/1858477 1.RF框架 1.1 RF框架介绍Robot Framework 框架是一个通用的测试框架,一直是由诺西网络(Nokia Siemens N ...

  6. 怎样用JMeter做接口测试?

    本文介绍JMeter如何做web service测试,一般来说web服务,一般指的是HTTP请求相关的内容.这里就介绍一下如何利用JMeter做基于HTTP的web接口测试.接口也叫API(Appli ...

  7. Jsoup做接口测试

    最早用Jsoup是有一个小的爬虫应用要写,发现Jsoup较HttpClient轻便多了,API也方便易懂,上手很快,对于response的Document解析的选择器用的是cssSelector(Jq ...

  8. jmeter做接口测试

    jmeter做接口测试有两种方式: 1. 2.

  9. postman+jenkins+newman做接口测试的持续集成

    为何要做接口自动化测试的持续集成? 1. 接口相对稳定,改动少,比起GUI自动化测试来说性价比更加高些,不容易出现GUI自动化那种掉到维护脚本的坑里. 2. 接口测试比较简单,一个规范的接口,测试只需 ...

随机推荐

  1. BZOJ4777 [Usaco2017 Open]Switch Grass[最小生成树+权值线段树套平衡树]

    标题解法是吓人的. 图上修改询问,不好用数据结构操作.尝试转化为树来维护.发现(不要问怎么发现的)最小生成树在这里比较行得通,因为最近异色点对一定是相邻的(很好想),所以只要看最短的一条两端连着异色点 ...

  2. pycharm图像不能显示,之前是可以显示的。显示一两次突然不显示了

    网上说是什么包问题的就说了.我遇到一个非常奇葩的问题 因为你的设置可能是这样 每次都在窗口右侧的工具栏那边显示.可能突然心情不佳就不显示了.然后你再把勾去掉即可.你要喜欢再点上也行.

  3. ESP8266—“ICACHE_FLASH_ATTR”宏——解释含义

    const uint8 MyArr[1024] ICACHE_RODATA_ATTR = {0}; void MyFun() ICACHE_FLASH_ATTR { } 这种 ICACHE 开头的宏作 ...

  4. PHP类知识----析构方法点滴

    网页执行完毕 手动调用析构方法 通过unset() 应用场景:断开mysql的连接 不同情况下,析构方法调用的时机不同,程序执行顺序如下 <?php class mycoach { public ...

  5. Web前端开发——HTML文件结构

    在编写html文件时,把文件保存成 .htm 或 .html的后缀. 基本文件结构 <html> <head> <title></title> < ...

  6. 题解 【NOIP2016】魔法阵

    [NOIP2016]魔法阵 Description 六十年一次的魔法战争就要开始了,大魔法师准备从附近的魔法场中汲取魔法量. 大魔法师有m个魔法物品,编号分别为1,2,...,m.每个物品具有一个魔法 ...

  7. Java进阶知识01 Struts2下的 jquery+ajax+struts 技术实现异步刷新功能

    1.效果图示 横线上方的部分不动(没有刷新),下方实现刷新(异步刷新) 2.实现步骤 jquery+ajax+struts技术实现异步刷新功能的步骤:    1.需要用到 jquery+ajax+st ...

  8. BZOJ1718分离的路径

    边双题. 求的就是最少加几条边可以使一个图变成边双联通图. 首先tarjan求一下边双,缩完点变成一颗树,统计度数为1的点(无根树的叶子),把这个数算出来,设为x,则ans=(x+1)/2. 这个可以 ...

  9. 快速理解arguments对象

    在js中一切都是对象,连函数也是对象,函数名其实是引用函数定义对象的变量. 1.什么是arguments? 这个函数体内的arguments非常特殊,实际上是所在函数的一个内置类数组对象,可以用数组的 ...

  10. Python定时框架 Apscheduler 详解【转】

    内容来自网络: https://www.cnblogs.com/luxiaojun/p/6567132.html 在平常的工作中几乎有一半的功能模块都需要定时任务来推动,例如项目中有一个定时统计程序, ...