1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 使用requests通过代码实现接口测试自动化

使用requests通过代码实现接口测试自动化

时间:2021-11-14 00:31:12

相关推荐

使用requests通过代码实现接口测试自动化

前言

接口测试是我们在测试工作中经常见到的,我们工作中常用到的接口工具有jmeter、postman、soupUI等工具,那么在通过代码做接口测试呢,或者通过代码的方式做接口自动化呢?

requests

requests属于python的第三方库,通常用来发送http和https的请求,既然能向http和https发送请求,那么就能来做接口测试。

安装

pip install requests

官方文档

https://requests.readthedocs.io/en/master/

requests使用方法

了解requests是如何安装的,也知道了requests的安装方法了,那么接下来就开始进行实际操作了。

get请求

都知道https请求方式有很多种,如何通过requests来发送get请求呢?这里安静通过模仿百度搜索内容进行发送请求。

其中get方法中存在3个参数:url和params。其中url表示我们请求的地址,params表示请求参数(get方式的请求存在url地址中),headers表示请求头信息内容。

import requestsurl = '/s'headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36"}params = {"wd": "测试-安静"}r = requests.get(url=url, params=params,headers=headers)print(r)print(r.url)if '测试-安静' in r.content.decode('utf-8'):print('请求成功!')(左右滑动查看完整代码)

通过执行结果是成功的。

其中requests的返回内容还有很多种,上面介绍的url,和content只是其中两种。

r.status_code#响应状态码r.content #字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩r.headers# 请求头信息r.json() # Requests中SONr.url # 获取urlr.encoding # 编码格式r.cookies # 获取cookier.text#字符串方式的响应体

post请求

post请求和get请求类似。post的参数主要有url、data(json)、headers。

url:请求接口地址data:post请求参数类型json: post请求参数类型headers:请求头信息

这里安静通过请求查询天气的接口来模拟post请求。

data请求

import requests# 登录请求地址url = '/simpleWeather/query'# 请求头headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36",}# body数据data = {'city': "上海", # 账号"key": "331eab8f3481f37868378fcdc76cb7cd", # 密码}# 发送请求r = requests.post(url, headers=headers, data=data)print(r.text)

通过执行发现,已经请求成功,并返回了响应结果。

json请求

import requestsurl ="/post"# 添加json数据json = {"username":"AnJing","password":"123456"}# 通过json方式添加数据r =requests.post(url,json=json)print(r.text)

通过执行结果可以看出我们请求的接口类型。

请求HTTPS

现在的网站都是HTTPS的了,所谓的HTTPS就是加密过的网站,在原有的HTTP的基础上加上了SSL。

HTTPS的请求基本上都是属于SSL加密的,那么对于这种HTTPS的请求,如果我们通过requests的请求进行访问,会报一个 requests.exceptions.SSLError 的错误。

对于这种问题,我们可以通过加入参数“verify=False”,requests请求时,verify默认为True,当设置False时,requests请求会进行忽略SSL,从而进行访问HTTPS请求。

import requestsurl ="/htm/brandpc/PZ.html"r = requests.get(url, verify=False)print(r.text)

通过加入参数后,在去执行的时候就不会报SSLerror的错误了。

session

关于session相信大家都不陌生,他和cookies一样使用来表示用户的登录的一种信息,cookies通常保存在客户端的,session保存在服务端上。

其中session可以相当于一个虚拟的浏览器,用来保持登录的状态。requests中有单独方法requests.session()的方法用来保存登录状态。

当然requests中有关于对cookies的登录,我们可以通过cookies加入到请求中,然后用来模拟登录场景。然后在去请求其他页面,可以看看到底我们的会话有没有保存成功。

这里通过模拟博客园的场景进行来操作cookies登录。

首先通过Fiddler进行抓取登录前和登录后的cookies值来判断博客园的登录到底是通过什么进行来登录的。

登录前的cookies

登录后的cookies

通过使用fiddler抓取,我们已经找到了登录的cookies内容,然后通过requests中的cookies进行来添加。具体代码:

# coding:utf-8import requestsimport urllib3urllib3.disable_warnings()s = requests.session()s.verify = False url = '/user/signin'headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36"}r = s.get(url,headers=headers)cooks = {".Cnblogs.AspNetCore.Cookies":"这里写入抓取到的cookies值",".CNBlogsCookie":"抓取到的cookies值"}c = requests.cookies.RequestsCookieJar()# 登陆有效的cookiesc.set(".CNBlogsCookie", cooks[".CNBlogsCookie"]) c.set(".Cnblogs.AspNetCore.Cookies", cooks[".Cnblogs.AspNetCore.Cookies"])# 将cookies值全部添加到session中s.cookies.update(c)# 访问后台地址,确定是否登录成功url1 = "/posts/edit"r1 = s.get(url1)result = r1.content.decode('utf-8')if "博客后台 - 博客园" in result:print("登录成功!")

通过执行发现,我们已经完成了登录后,并通过session的形式进行访问本网站的其他地址一样是保持着登录的状态。

重定向

接口测试中也经常遇到重定向的问题,什么是重定向?就是通过各种方法将各种网络请求重新定个方向转到其它位置。

在requests中也有这对重定向的操作allow_redirects其中参数默认是True就是允许重定向,当我们请求的时候,将这个参数设置成False,就能不让其进行重定向。

# coding:utf-8import requestsurl = ''# 重定向为Falser = requests.get(url, allow_redirects=False)print('拒绝重定向请求的状态码:%s'%(r.status_code))print('拒绝重定向请求地址:%s'%(r.url))# 重定向为True(默认为True)r2 = requests.get(url)print('允许重定向请求的状态码:%s'%(r2.status_code))print('允许重定向请求地址:%s'%(r2.url))

通过执行发现,我们的参数已经设置成功了。在拒绝重定向的时候请求的状态为301,允许重定向的时候为200。

总结

安静简单的介绍了requests中的一些常用方法,这些方法可以帮助我们通过python+requests进行编写关于接口测试的方便的代码。

等熟练使用requests后可以进行尝试编写自动化测试代码进行辅助日常测试工作。

最后:大家可以去我博客首页看下侧边栏! 进去有许多资料共享!资料都是面试时面试官必问的知识点,也包括了很多测试行业常见知识,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。