您的位置:首页 > 产品设计 > UI/UE

接口自动化测试介绍之Requests

2017-02-16 11:08 260 查看
一、接口测试

接口测试通常是系统之间交互的接口,或者某个系统对外提供的一些接口服务,我之前接触的大部分都是RESTful,还有一些webservice接口。现在大家也越来越多的关注接口测试了,因为有时候可能界面上的功能还没有实现,我们可以先一步对接口进行验证,提早发现一些和预期不一致的错误。这方面的工具应该也有一些,基于RF的接口测试库我们首推requests和requestsLibrary。


二、requestsLibrary、requests安装

前面介绍了pip安装,如果pip不好用或者网络不好的同学,可以本地安装,到下面官网下载进行手动安装。

requests的官方下载地址: https://pypi.python.org/pypi/requests
requestsLibrary的官方下载地址: https://pypi.python.org/pypi/robotframework-requests/
如果是下载tar.gz包安装,先要安装requests,再安装requestsLibrary


三、requestsLibrary关键字

requestsLibrary的关键字不多,我常用的就几个。

Create Session: 创建一个session,连接某个服务器。

Create Ntlm Session: 也是创建一个session,只不过加上了域、用户名、密码用于NTLM认证。

Get Request: 通过GET方式发起请求。

Post Request: 通过POST方式发起请求。

Head Request: 发送一个HEAD请求。

TO Json: 将文本转换成json对象。


四、测试案例

这里的demo我们是用到了flask的网站,做了几种例子,大家了解一下,如果需要更完整的了解,建议看一下RequestsLibrary在github上的测试案例。

4.0 使用demo前的准备

我用了flask来实现了一个demo网站,它可以快速建立起一个网站,只用一些简单的语句。

如果使用pip安装会比较方便,特别是在mac电脑上,为了保证例子能正常运行,大家需要安装四个东东, flask、flask-httpauth、flask_restful、python-simplexml。

只需要运行如下命令:

1234567891011macsudo pip install flasksudo pip install flask-httpauthsudo pip install flask_restfulsudo pip installpython-simplexmlwindowspip install flaskpip install flask-httpauthpip install flask_restfulpip install python-simplexml 
安装完成之后就可以运行我们的demo-website了,我的书里全部的demo的地址是: https://github.com/qitaos/rf-demos具体说明可以看网站上的README,所有的demo都会放到这里,同时书籍出版后也会继续更新,所以你看到github上rf-demos的内容可能会比书上的多。demo-website的地址是:https://github.com/qitaos/rf-demos/tree/master/demo-website下载整个工程之后,进入demo-website目录,运行命令 python flaskdemo.py运行成功后会有提示信息

1

2

3

4

pythonflaskdemo.py

Runningonhttp://127.0.0.1:8000/
(Press CTRL+C to quit)

Restartingwithstat

 

这里提示我们服务器已经启动,访问http://127.0.0.1:8000/ 或者 http://localhost:8000/ 就可以打开页面了。

如果有任何出错信息,有可能是前面的测试库没有安装完整。


1、get request json

访问http://localhost:8000/users/1 的时候,它会返回一个json:

{“1”: “john”}





json1

如果把1换成5,它会返回一个404的json:

12345{“message”: “NotFound: http://localhost:8000/users/5“,“status”: 404} 


status404所以这里第一个案例就是来测试这2个接口请求。
首先要先Create Session创建一个连接到服务器的host,然后通过Get Request发起请求,请求的返回是个Request对象${addr},所以在这里的变量是个对象,而对象的属性值的有${addr.status_code}和${addr.content},使用了To Json后,就把返回的content格式化成Json串,然后就可以用Dictionary的方法获取其中的值了。
脚本见表格

脚本

2、getrequest xml

前面一个例子是接口返回json进行处理的,这个例子是接口返回xml格式内容。访问http://localhost:8000/hello/qitao,会返回一个xml格式的内容:

1

2

3

4

<response>

<hello>qitao</hello>

</response>

 





xml格式

案例比较长,分两个部分说,第一个部分其实还是用json来处理,虽然返回的是xml,但是requestslibrary自动把它处理成json了。

所以它的这部分处理其实和前面的案例一样。

脚本见表格





json2

那么想要返回xml怎么处理呢?这里就要在Request的essay-header里加上一个accept=application/xml,此时返回的就是一个xml格式的内容

qitao

所以这里用到了XML库的关键字Get Element Text来获取xml节点的文本,使用Get Element获取到一个Element对象${hello},既然是对象,那么它也有属性值${hello.text}。再后面的几行就是用XML库的关键字新增Element,然后取值,这也算是提前准备好来XML的demo了。

这里为什么要做xml的例子呢,其实是因为有一种接口测试就是测试Web Service的,通常Web Service都是返回一个xml格式的内容。

这里demo网站没有做Web Service的例子,所以就用这个xml的例子来代替Web Service了。

脚本见表格





Web Service

运行案例结果如图:





案例结果


3、增加登录态

有些接口是需要用户密码登录后才能访问的,如果直接访问: http://localhost:8000/401 会提示要输入用户名密码





增加登录态

输入正确的用户名密码ok/python,会得到一个返回的信息

1

2

3

4

{

“pass”:”Authorizedaccess”

}

 

但是我们做自动化脚本的时候不能去手动输入的,所以我们可以在Create Session的时候加上用户名密码,就可以直接访问了。

用户名ok,密码python,我们用${auth}创建个List存起来,然后在Create Session时加上${auth}参数,后面的过程就是前面一样了,不需要自己再手动输入用户密码了。脚本见表格





Create Session

运行结果如图





运行结果1


4、postrequest

前面几个都是get方式的,这个例子是post方式的。

这里主要是在essay-header加了一项Content-Type=application/x-www-form-urlencoded,这是最常见的post提交数据的方式,另外还有几种我不太常用的,大家可以根据自己的实际情况来使用。

然后我们向 http://localhost:8000/post, 发起请求,并将${data}作为post的data传过去。demo网站对post请求做了个处理,将username的值获取到然后以json格式返回。脚本见表格





postrequest


五、小结

接口测试维护成本很低,一般来说接口上不会特别频繁的变更。即使有变更,正好也可以用这些案例来回归其他接口是否受到了影响。所以推荐大家将接口自动化测试优先做起来,一定要在上线前跑接口自动化回归测试,某些时候能够避免一些接口变更导致的问题。

测试案例可以在这里找到: https://github.com/qitaos/rf-demos/tree/master/RequestsDemo
文章转载:http://blog.nsfocus.net/requests-interface-automation-test-introduction/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: