接口自动化测试--入门
一、什么是接口自动化测试?
让程序或工具代替人工自动化的完成对接口进行测试的一种过程。
二、实现方式:
- 工具(Jmeter,postman)
- 代码(python-requests)
三、测试工具缺点:
- 测试数据不好控制(无法直接读取或存储json格式)
- 测试数据加密不方便
- 扩展性不足(复杂业务逻辑)
四、本次学习目标:基于python结合requesrs库实现接口自动化测试
五、Requests库介绍:
- 使用python语言编写
- 使用开源协议,基于urllib库做的二次封装
- Requests库中封装了相应接口测试方法
1、GET方法(响应状态码:200)
#1.导包
import requests
#2.调用get
url="http://127.0.0.1:8080/demo/cheliangxinxi/list/"
r=requests.get(url)
#3.获取请求url地址
print("url为:",r.url)
#4.获取响应状态码
print("状态码为:",r.status_code)
#5.获取响应信息,文本形式
print("响应信息为:",r.text)
print(r.headers)
l=r.encoding='ASCI'
print(r.encoding)
2、GET方法请求带参数
#1.导包
import requests#2.调用get
url="http://www.baidu.com"
#参数:params:字典或字符串(推荐使用字典)
#字典
params={"id":1001,"kw":"北京"} # %2c ASCI值为逗号
#字符串
#r=requests.get(url,params="id=1001")
r=requests.get(url,params=params)
#不推荐写法
#url="http://www.baidu.com?id=1001"
#3.获取请求url地址
print("url为:",r.url)
#4.获取响应状态码
print("状态码为:",r.status_code)
#5.获取响应信息,文本形式
print("响应信息为:",r.text)
3、PUT方法(响应状态码:200或201)
import requests
url="http://127.0.0.1:8080/demo/cheliangxinxi/edit/180/"
headers={"Content-Type":"application/json"}
data={"data": [{"id": "180","chehao":"T01","pinzhong": "Test学院update"}]
}r=requests.put(url,json=data,headers=headers)
print(r.json())print(r.status_code)
4、POST方法(响应状态码:201)
import requests
url="http://127.0.0.1:8080/demo/cheliangxinxi/add/"
headers={"Content-Type":"application/json"}
data={"data": [{"chehao":"T01","pinzhong": "Test学院"}]
}r=requests.post(url,json=data,headers=headers)
print(r.json())
print(r.status_code)
print(r.text)
5、传递参数json与data格式的区别?
data:字典对象
json:json字符串
6、如何将字典对象转换为json字符串?
1.导入json包
2.json.dumps(字典对象)
7、响应数据json()与text区别?
json():双引号,返回类型字典,可以通过键名来获取响应的值
text:单引号,返回的类型为字符串,无法通过键名俩获取响应的值
8、DELETE方法(响应状态码:204)
import requests
url="http://127.0.0.1:8080/demo/cheliangxinxi/remove/190/"
r=requests.delete(url)print(r.status_code)
六、响应对象的方法
1.encoding
查看默认请求编码格式:响应对象.encoding
设置响应编码格式 响应对象.encoding=”utf-8”
2.headers 获取服务器响应信息头
响应对象.headers
3.cookies获取响应cokkies信息(服务器产生)
4.text:以文本形式解析
5.content:以字节码形式解析响应内容
6.json() 以json字符串格式解析响应内容
七、案例:
TPShop商城的获取验证码,登陆成功,获取订单信息
import requests
import json
#获取验证码
url="http://demo6.tp-shop.cn/index.php?m=Home&c=User&a=verify"
r=requests.get(url)#获取cookie
r_cookie=r.cookies
print(r_cookie)
print("单独获取cookie值:",r_cookie['PHPSESSID'])#设置cookie变量
cookies={"PHPSESSID":r_cookie['PHPSESSID']}url_login="http://demo6.tp-shop.cn/index.php?m=Home&c=User&a=do_login"
data={"username": "15991986680","password": "Wxm131411","region": "8888"
}
r_login=requests.post(url=url_login,json=data,cookies=cookies)
print(r_login.json())
#获取订单信息
url_order="http://demo6.tp-shop.cn/index.php/Home/Order/order_list.html"
r=requests.get(url=url_order,cookies=cookies)
print(r.text)
Session:完成一次会话(从客户端和服务器创建请求连接开始,到客户端和服务器断开连接结束)
session可以自动保存服务器产生的cookies信息,并且自动在下一条请求时附加。
应用:通过session对象.方法
session.get()
session.post()
session.put()
session.delete()
无论是requests还是session返回结果都是responsebody
八、TPShop案例session版本
import requests
import json
#获取验证码
url="http://demo6.tp-shop.cn/index.php?m=Home&c=User&a=verify"
r=requests.get(url)#获取cookie
r_cookie=r.cookies
print(r_cookie)
print("单独获取cookie值:",r_cookie['PHPSESSID'])#设置cookie变量
cookies={"PHPSESSID":r_cookie['PHPSESSID']}url_login="http://demo6.tp-shop.cn/index.php?m=Home&c=User&a=do_login"
data={"username": "15991986680","password": "Wxm131411","region": "8888"
}
session=requests.session()
r_login=session.post(url=url_login,json=data)
print(r_login.json())
#获取订单信息
url_order="http://demo6.tp-shop.cn/index.php/Home/Order/order_list.html"
r=session.get(url=url_order)
print(r.text)
九、unittest与requests结合
继承unittest.TestCase,以test开头的方法就是一条用例
setup:
作用:test开始方法执行之前,首先会被执行
teardown:
作用:test开始方法执行之后,会被执行
test_login_success:
作用:登陆成功
test_username_not_exist
作用:登陆失败,用户名不存在
test_password_error
作用:登陆失败,密码错误
import unittest
import requests
class TPShopLogin(unittest.TestCase):def setUp(self):#获取session对象self.session=requests.session()#登陆urlself.url_login="http://demo6.tp-shop.cn/index.php?m=Home&c=User&a=do_login"#验证码urlself.url_verify="http://demo6.tp-shop.cn/index.php?m=Home&c=User&a=verify"def tearDown(self):self.session.close()#关闭sessiondef test_login_sucess(self):#请求验证码self.session.get(self.url_verify)data = {"username": "15991986680","password": "Wxm131411","region": "8888"}#请求登陆r=self.session.post(self.url_login,json=data)#断言try:self.assertEqual("登陆成功",r.json()['msg'])except AssertionError as e:print(e)def test_username_not_exist(self):# 请求验证码self.session.get(self.url_verify)data = {"username": "159919866801","password": "Wxm131411","region": "8888"}# 请求登陆r = self.session.post(self.url_login, json=data)# 断言try:self.assertEqual("用户名不存在", r.json()['msg'])except AssertionError as e:print(e)def test_password_error(self):# 请求验证码self.session.get(self.url_verify)data = {"username": "15991986680","password": "Wxm13141111","region": "8888"}# 请求登陆r = self.session.post(self.url_login, json=data)# 断言try:self.assertEqual("密码错误", r.json()['msg'])except AssertionError as e:print(e)def test_verify_error(self):# 请求验证码self.session.get(self.url_verify)data = {"username": "15991986680","password": "Wxm13141111","region": "8888"}# 请求登陆r = self.session.post(self.url_login, json=data)# 断言try:self.assertEqual("验证码错误", r.json()['msg'])except AssertionError as e:print(e)if __name__=='__main__':unittest.main()
接口自动化测试--入门相关推荐
- 11小时 python自动化测试从入门到_从设计到开发Python接口自动化测试框架实战,资源教程下载...
课程名称 从设计到开发Python接口自动化测试框架实战,资源教程下载 课程简介: 课程从接口基础知识入门,从抓包开始,到接口工具的运用,再到常见接口库.接口开发.Mock服务.unittest框架的 ...
- 接口自动化测试,完整入门篇
一.自动化测试 众所周知,自动化测试已经成为软件项目中不可或缺的测试方法.基于用户交互界面(GUI)的自动化测试方法具有模拟用户行为和过程可视化的特点,因此受到了广大入门自动化人士的喜爱.诸如:QTP ...
- 【入门篇】接口自动化测试
1. 什么是接口测试 顾名思义,接口测试是对系统或组件之间的接口进行测试,主要是校验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系.其中接口协议分为HTTP,WebService,Dubbo,T ...
- 接口自动化测试从入门到高级实战(最新干货)
一.接口测试背景和必要性 接口测试是测试系统组件间接口(API)的一种测试,主要用于检测内部与外部系统.内部子系统之间的交互质量,其测试重点是检查数据交换.传递的准确性,控制和交互管理过程,以及系统间 ...
- python自动化测试视频百度云-Python接口自动化测试视频教程下载
Python接口自动化测试视频教程下载 课程介绍: 此套Python接口自动化测试视频教程适合入门接口测试和学习python+requests自动化的学员学习,教程对http协议.fiddler抓包与 ...
- python自动化测试视频百度云-Python接口自动化测试 PDF 超清版
给大家带来的一篇关于Python自动化相关的电子书资源,介绍了关于Python.接口自动化.测试方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小61.2 MB,王浩然编写,目前豆瓣.亚马 ...
- python自动化测试看什么书-Python自动化测试入门,看这一篇就足以
第一时间关注 Python 技术干货! 阅读文本大概需要 5 分钟. 上篇文章讲了自动化测试的重要性,今天就给大家讲讲自动化框架 Robot Framework 的安装和 demo 演示. 为什么选择 ...
- python自动化测试视频百度云-python接口自动化测试视频教程全集
python接口自动化测试视频教程全集 下载地址:https://k.weidian.com/Pfm=DyuI 课程内容: 第一章:接口测试基础 1-1 接口自动化课程简介 1-2 接口测试课程大纲 ...
- python接口自动化用例管理_python接口自动化测试(六)-unittest-单个用例管理
前面五节主要介绍了环境搭建和requests库的使用,可以使用这些进行接口请求的发送.但是如何管理接口案例?返回结果如何自动校验?这些内容光靠上面五节是不行的,因此从本节开始我们引入python单元测 ...
最新文章
- H3C 交换机命名规则
- 寒武纪首颗AI训练芯片亮相
- PostgreSQL的xlog实验一
- Vue2.0 + ElementUI 手写权限管理系统后台模板(一)——简述
- c++ 单例模式 对全局变量的替代
- Oracle单行函数
- 深入理解Delete(JavaScript)
- Jenkins(Pipeline)
- Android Studio系列教程一--下载与安装
- Portainer 安装与使用
- completable java_java8 CompletableFuture异步编程
- java 二进制置位,重置
- hadoop2.7.3+hbase1.2.5配合起来使用的一个小问题,备注一下
- 水经注下载的地图版权_如何使用水经注万能地图下载器下载谷歌卫星地图
- 对天敏电视精灵I老版播放器的修改和分析
- java.lang.NoSuchMethodError 之 依赖冲突解决方案
- 常见笔记本CPU型号参数和性能对比一览表
- Android逆向:去除RE管理器4.41及车来了广告
- Calendar 根据指定日期 获取月的第几周
- EasyAPI基于电子发票API接口二维码小票对接方案
热门文章
- 【移动端】事件(touchstart、touchmove、touchend、touchcancel)跟事件对象属性(changedTouches、targetTouches、touches)
- 电子与智能化二级资质承包范围,看完就了解了!
- 哈理工软微2019新生赛(同步赛)——小乐乐与二段数【数论】
- mac M1 pod install指令
- 日语自学资料-N3(免费下载)
- TCP/IP 网络协议基础
- C++23种设计模式(21)-访问者模式
- jquery锚点定位
- 如何解决三星S10e美版系统无法跳过Android设置向导的问题
- 微信支付, 小程序,公众号, 商户号 需要进行的配置