Python接口自动化测试的实现

1)环境准备:

接口测试的方式有很多,比如可以用工具(jmeter,postman)之类,也可以自己写代码进行接口测试,工具的使用相对来说都比较简单,重点是要搞清楚项目接口的协议是什么,然后有针对性的进行选择,甚至当工具不太适合项目时需要自己进行开发。

在我们项目的初期,我们采用的是jmeter进行接口测试,当时觉得这个工具上手简单,团队成员学习成本低,并且接口测试的脚本稍微调整一下还可以用来做性能测试。

不过随着项目规模、团队人数的不断增长,渐渐的这个工具有适应不了当前项目的需求了,为此我们项目也重新开发了相关接口自动化的平台。但是,但是。。。可能是我让大家中毒太深,现在很多同学一提到接口测试关联到jmeter,为此,我深深感到不安。毕竟jmeter只是个工具,换个项目换个协议你是否还能玩转接口测试呢?session和cookie有什么区别?工具又是怎么实现的呢?

比如session如何保存,接口依赖如何处理,case如何管理及执行顺序,测试数据如何管理等等题,这个过程也有助于我们更加深刻的理解接口测试和http协议。

本文主要采用python语言,python中http协议接口相关的库有urllib,urllib2以及reqeusts库,这其中reqeusts库用来起来最方便,因此我也主要采用requests库来做http协议的接口测试。首先来看下需要哪些环境信息:

一、安装python

安装Python这个就不多说了。

二、安装虚拟环境:

我们在一台机器上可以安装多个python版本,为了使每个版本的环境相互不受干扰,可以安装虚拟环境,安装方法如下:

1、安装virtualenv:pip install virtualenv

2、新建名为venv的虚拟环境:virtualenv venv

3、进入新环境:source venv/bin/activate

4、退出:deactivate

三、安装requests库:

pip install requests

ps:用python做http协议的接口测试会用到这个库。

如果对软件测试有兴趣,想了解更多的测试知识,解决测试问题,以及入门指导,帮你解决测试中遇到的困惑,我们这里有技术高手。如果你正在找工作或者刚刚学校出来,又或者已经工作但是经常觉得难点很多,觉得自己测试方面学的不够精想要继续学习的,想转行怕学不会的, 都可以加入我们810119819,群内可领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!

四、http测试工具:

一个使用 Python + Flask 编写的 HTTP 请求和响应服务,该服务主要用于测试 HTTP 库。后续测试我们都基于这个网站。

五、在本地搭建httpbin:

考虑到测试时要不断访问 httpbin 网站,请求过多担心被拉到黑名单,我们自己在本志搭建一套httpbin服务。

1、安装:pip install gunicorn

2、安装:pip install httpbin

3、启动:gunicorn httpbin:app

至此,环境搭建已经完毕,可以开始玩了~

(2)requests.get()

环境搭建好后,接下来我们先来了解一下requests的一些简单使用,主要包括:

requests常用请求方法使用,包括:get,postrequests库中的Session、Cookie的使用其它高级部分:认证、代理、证书验证、超时配置、错误异常处理等。

本节首先来了解一下requests库中如何发送get请求:

一、看下方法定义:

1、到官方文档去了下requests.get()方法的定义,如下:
在这里插入图片描述
2、点击右上角的【source】,看一下它的源码如下:在这里插入图片描述
看到最后一行return,get方法最后是通过调用 requests.request方法实现的,其实在其它的请求方法如post,put,head,delete等方法都是调用的request方法,然后把请求方法的类型传递给request方法第一个参数。

3、HTTP协议是一个基于请求/响应模式的、无状态的,应用层协议。既然有请求,就有响应,来看下resquest中常用的响应信息:在这里插入图片描述
二、get方法简单使用:

1、不带参数的get:

-- coding:utf-8 --

#不带参数的get

import requests

import json

host = “/”

endpoint = “get”

url = ‘’.join([host,endpoint])

r = requests.get(url)

#response = r.json()

print type(r.text)

print (eval(r.text))

输出:

{‘origin’: ‘183.14.133.88’,‘headers’: {‘Connection’: ‘close’,‘Host’: ‘httpbin.org’,‘Accept-Encoding’: ‘gzip,deflate’,‘Accept’: ‘/’,‘User-Agent’: ‘python-requests/2.18.1’},‘args’: {},‘url’: ‘http: //httpbin.org/get’}

2、 带参数的get:

-- coding:utf-8 --

#带参数的get

import requests

import json

host = “/”

endpoint = “get”

url = ‘’.join([host,endpoint])

params = {“show_env”:“1”}

r = requests.get(url=url,params=params)

print r.url

输出:

/get?show_env=1

{

‘origin’: ‘183.14.133.88’,

‘headers’: {

‘X-Request-Id’: ‘ebe922b4-c463-4fe9-9faf-49748d682fd7’,

‘Accept-Encoding’: 'gzip,

deflate’,

‘X-Forwarded-Port’: ‘80’,

‘Total-Route-Time’: ‘0’,

‘Connection’: ‘close’,

‘Connect-Time’: ‘0’,

‘Via’: ‘1.1vegur’,

‘X-Forwarded-For’: ‘183.14.133.88’,

‘Accept’: ‘/’,

‘User-Agent’: ‘python-requests/2.18.1’,

‘X-Request-Start’: ‘1504755961007’,

‘Host’: ‘httpbin.org’,

‘X-Forwarded-Proto’: ‘http’

},

‘args’: {

‘show_env’: ‘1’

},

‘url’: ‘http: //httpbin.org/get?show_env=1’

}

3、带header的get:

-- coding:utf-8 --

import requests

import json

host = “/”

endpoint = “get”

url = ‘’.join([host,endpoint])

headers = {“User-Agent”:“test request headers”}

r = requests.get(url)

r = requests.get(url,headers&#

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值