接口和协议组成 Python 实现接口测试的简单实例

刘津嘉 · 2016年01月20日 · 最后由 郑晶 回复于 2017年05月21日 · 4097 次阅读

Hi~ 由于最近家里宝宝病了,我也在研究 python 的其他内容,很久没有来社区了,不过我还是一直关注社区的动态哟

好了,闲聊的话题就到此为止, 今天我给大家带来的,是 python 实现的接口自动化测试的开发实例(简例),深入的内容需要符合业务逻辑, 所以再此处不多赘述。

首先

我们拿到了豆瓣的 API 接口及参数发送方法。详见:http://developers.douban.com/wiki/?title=api_v2
我这边拿到的是书籍查询接口 地址为:https://api.douban.com/v2/book/1220562
所以我们从这个 url 地址可以看出,后面的 1220562 为书籍的参数,或者,我们可以通过 GET 或 WGET 的方法 ,通过修改参数查看返回值

其次

我们创建一个名为 request.py 的 python 文件(显然是废话,名字当然可以随意的起)

import urllib,urllib2   #导入这两个模块
import requests        # 导入这个模块

然后我们导入 urllib 模块和 requests 模块, 如果对这两个模块不熟悉的同学, 请自行百度

我通过 Linux 的 Get 方法的尝试发现,这个书籍的 id 是从 1000001 开始 才有数据,也就是第一本书的数据内容,所以,我们需要一个 100W 的计数器,或者可以叫做书籍 ID

count = 1000000          #书籍ID
if count <=2000000:     #如果书籍的ID小于200W
    while True:                 # 条件为真
        count += 1             #循环开始,并且count += 1 
        try:                          #try 捕获异常
            url = 'https://api.douban.com/v2/book/%s' %count             #自动通过count数量的变化请求接口数据 

            url2 = urllib2.Request(url)                                                          # 使用urllib2的request方法
            response = urllib2.urlopen(url2)                                               #用urlopen打开上一步返回的结果,得到请求后的响应内容
            apicon = response.read()                                                          #读取response
            print apicon
        except urllib2.HTTPError:                                                              #如果频繁请求,会被判定为恶意请求, 并被封IP 这个只是一个实例,没有加时间间隔,想深入做的同学可以加一下
            print "error , urllib2.HTTPError : %s " %count                          # 如果捕获异常, 则返回异常坐标

最后

我们来验收一下通过接口,返回的数据内容吧

欸,貌似可以看到数据了呢,所以大家也来尝试一下, 在自己的测试环境进行一次简单的接口测试吧

这是简单的 python 实现的接口测试的开发实例,如果想做自动化接口测试开发的同学,还需要自己深入了解,后续我会继续根据实例来讲解 python 自动化相关的内容

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 26 条回复 时间 点赞

简单易懂

代码上有两处不合理,需要修改一下。哈哈。有同学指出来了

26楼 已删除

建议用把 User-Agent 改改,暴力爬豆瓣 api 小心封 ip:)

#5 楼 @andward 然后我的就被封了...

#6 楼 @y1i1n1 哈哈哈 我当时用多进程然后 5s 来一下,100w 数据 爬了一天~~

点赞

—— 来自 TesterHome 官方 安卓客户端

不错,从源头干起。不喜欢那种一说 api 测试,就是 jmeter,rf 啥的

#7 楼 @andward 5 秒一下不保险, 哈哈

#5 楼 @andward 嗯 USER - Agent 要改, 要加一下 headers ,还有时间间隔

使用语言直接编写接口测试果然很爽

很赞!

简单粗暴,太强了

新人点赞!

不错,点赞一下。

为什么 Python 的 Requests 模块这么强大而且易用还整天有那么多人说 postman soapui jmeter 等等?
直接写代码多简单,requests + unitest 就已经可以了呀。
一看接口测试就各种工具 可惜我一个工具都不会用 好忧伤

好像你导入了 requests 但代码中并没用到。
其实有了 requests 为什么还要用 urllib 和 urllib2 呢 ?

之前黑盒测试,刚开始学,能看懂些,

—— 来自 TesterHome 官方 安卓客户端

会编程然后直接模拟用户请求,这样接口测试最直接。担心 ip 被封可能需要考虑用一些代理来使用不同 ip 访问

简单易懂

期待后续 Python 接口自动化内容

再来点 python 接口的自动化内容吧

点赞 希望前辈多发好贴

mark

—— 来自 TesterHome 官方 安卓客户端

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册