使用python进行接口测试

最近在做接口测试,之前公司的方案是使用postman进行接口测试。但是伟大的墙导致我们只能用离线版postman。。然后一个很长很长的接口列表,一个接一个的访问。我的天哪。。所以萌生了一个想法,使用python编写一套接口测试脚本,设置接口列表,然后逐条访问,输出日志。

  第一个坑:POST 和 GET----GET一般用于获取/查询资源信息,而POST一般用于更新资源信息|Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求。

做过接口测试或者做过前端的人都知道,接口的访问方式是不一致的,所以才会使用postman来进行接口测试,因为它可以设置post和get方式。使用python模拟这俩种访问方式是重中之重。先说GET方式。GET方式就比较简单了,把接口放进浏览器地址栏,点下回车就完成了一次GET。所以就需要使用python访问URL就可以模拟一次GET 测试。

1 import urllib2
2 url_save = ‘http://www.baidu.com/‘
3 try:
4     s_save = urllib2.urlopen(url_save).read()
5     print s_save
6 except urllib2.HTTPError, e:
7     print e.code
8 except urllib2.URLError, e:
9     print str(e)

如上所示就完成了一次GET请求,调用urllib2库,然后将一个字符串形式的URL传给urllib2.urlopen函数,最后使用read()方法将GET回来的数据存储起来。

然后说说POST。其实在python的urllib2库中,我们刚刚所使用的urlopen函数还有其他几样不是必选的入参,因为这些入参给定了初始化的值:

1 def urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT,
2             cafile=None, capath=None, cadefault=False, context=None):

如上代码,urllib库有一个很智能的毛病。data不给值,访问方式就是GET,data给了值,方式就会变成POST;所以模拟POST 方式的代码如下:

import urllib
import urllib2
url = ‘http://www.example.com‘
# values的形式:name:value
values = {‘**‘ : ‘***‘,
          ‘**‘ : ‘***‘,
          ‘**‘ : ‘***‘ }
#使用urllib.urlencode函数对values字典进行处理,最终形式为:**=***&**=***
data = urllib.urlencode(values)
#如果对data顺序有要求,建议自己拼接data
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
the_page = response.read()

就像如上代码,把POST方式所需要的数据写到data参数中去,POST方式就模拟成功了。

  第二个坑:cookie的使用

使用python获取cookie所需要的库叫做cookielib。获取cookie的例子:

 1 # 这里有四种CookieJar,CookieJar是最原始的
 2 cookie_use = cookielib.CookieJar()
 3 handler = urllib2.HTTPCookieProcessor(cookie_use)
 4 # 使用绑定好CookieJar的handler创建一个opener
 5 opener = urllib2.build_opener(handler)
 6 # 将opener安装到urllib2中
 7 urllib2.install_opener(opener)
 8 # 使用安装好的urllib2访问某一网站获取cookie
 9 urllib2.urlopen(‘https://....../login‘)
10 #这个时候cookie已经被CookieJar获取到了
11 print cookie_use

在下一步,将获取到的cookie绑定到opener头中:

1 ‘‘‘
2  将获取到的cookie绑定到opener,上一步获取的cookie并不满足如下格式,
3  需要自己进行字符串的切片和拼接
4 ‘‘‘
5 opener.addheaders.append((‘Cookie‘, ‘name=***&888=888‘))

现在的opener就可以用来访问任意需要登录的网站了!

转自http://www.cnblogs.com/hainan-zhang/p/5320153.html#undefined

                                    

时间: 2024-08-01 16:52:33

使用python进行接口测试的相关文章

基于Python的接口测试框架实例

文章来源:http://www.jb51.net/article/96481.htm 下面小编就为大家带来一篇基于Python的接口测试框架实例.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 背景 最近公司在做消息推送,那么自然就会产生很多接口,测试的过程中需要调用接口,我就突然觉得是不是可以自己写一个测试框架? 说干就干,由于现有的接口测试工具Jmeter.SoupUI等学习周期有点长,干脆自己写一个吧,不求人,所有功能自己都能一清二楚. 当然,写工具造轮子只是

Python+Requests接口测试教程(1):Fiddler抓包工具

本书涵盖内容:fiddler.http协议.json.requests+unittest+报告.bs4.数据相关(mysql/oracle/logging)等内容.刚买须知:本书是针对零基础入门接口测试和python+requests自动化的,首先本书确实写的比较基础,对基础内容也写的很详细,所以大神绕道. 为什么要先学fiddler? 学习接口测试必学http协议,如果直接先讲协议,我估计小伙伴们更懵,为了更好的理解协议,先从抓包开始.结合抓包工具讲http协议更容易学一些. 1.1 抓fir

基于python的接口测试学习笔记一(初出茅庐)

第一次写博客笔记,讲一下近来学习的接口自动化测试.网上查阅了相关资料,最后决定使用python语言写接口测试,使用的是python的第三方库requests.虽然python本身标准库中的 urllib2 模块提供了你所需要的大多数 HTTP 功能.但requests更好用简单.果断入门学习. 新手入门,代码比较简单 import requests import unittest class apiTest(unittest.TestCase): def setUp(self): self.ba

[转]基于Python的接口测试框架

http://blog.csdn.net/wyb199026/article/details/51485322 背景 最近公司在做消息推送,那么自然就会产生很多接口,测试的过程中需要调用接口,我就突然觉得是不是可以自己写一个测试框架? 说干就干,由于现有的接口测试工具Jmeter.SoupUI等学习周期有点长,干脆自己写一个吧,不求人,所有功能自己都能一清二楚. 当然,写工具造轮子只是学习的一种方式,现成成熟的工具肯定比我们自己的写的好用. 开发环境 操作系统:Mac OS X EI Capti

Python的接口测试框架实例

分析 接口是基于HTTP协议的,那么说白了,就是发起HTTP请求就行了,对于Python来说简直就是小菜一碟.直接使用requests就可以很轻松的完成任务. 架构 整个框架是比较小的,涉及的东西也比较少,只要分清楚几个模块的功能就行了. 上面是一个接口测试的完整流程.只要一步一步的走下来就行了,并不是很难. 数据源 数据源我使用的是JSON来保存,当然,比较广泛的是使用Excel来保存,用JSON来保存是因为JSON用起来比较方便,懒得去读取Excel了,Python对JSON的支持是非常友好

python解决接口测试获取手机验证码问题

最近在做接口测试的时候遇到一个问题,就是有个很重要的接口要用到手机短信验证码,而其他接口都依赖于这个验证码,如果没有短信验证码就不能进行下面接口的测试,所以为了定时的验证线上的接口是否正常,而且又不修改代码,所以就想到一下解决方案,如果大家有了更好方案可以一起交流分享 android 代码 Android在收到短信后会发送一个Action为android.provider.Telephony.SMS_RECEIVED的广播,所以我们只需要写个类继承BroadcastReceiver就可以很容易地

Python+Requests接口测试教程(2):requests

开讲前,告诉大家requests有他自己的官方文档:http://cn.python-requests.org/zh_CN/latest/ 2.1 发get请求 前言requests模块,也就是老污龟,为啥叫它老污龟呢,因为这个官网上的logo就是这只污龟,接下来就是学习它了.环境准备(小编环境):python:2.7.12pycharm:5.0.4requests:2.13.0(这学本篇之前,先要有一定的python基础,因为后面都是直接用python写代码了,小编主要以讲接口为主,pytho

python 实现接口测试

接口的类型有很多,但是我们经常遇见经常用的就get和post两种.这两种有什么区别呢?个人理解主要是表现在安全性方面. Python代码POST任意的HTTP数据以及使用Cookie的方法,有需要的朋友可以参考下. 1).不使用Cookie时,发送HTTP POST还是非常简单的: import urllib2, urllib data = {'name' : 'www', 'password' : '123456'} f = urllib2.urlopen( url = 'http://www

Python API接口测试

一.postman的使用 1.安装,postman是一个Chrome插件,可以在Chrome扩展程序中安装-------百度就可以了 这里介绍一个小技巧:工作当中,我们可能经常会遇到一些404,500或者其他我们无法分析的错误时,我们可以把接口copy为cURL发送给开发人员,让其帮我们找到答案 开发者工具找到该错误接口,copy-cURL postman:import到postman.就可以直接发送了 二.设置全局变量 如图设置全局变量后,可以在右侧眼睛看到自己设置的全局变量:当然,还可以ad