一、什么是接口自动化测试?

让程序或工具代替人工自动化的完成对接口进行测试的一种过程。

二、实现方式:

  1. 工具(Jmeter,postman)
  2. 代码(python-requests)

三、测试工具缺点:

  1. 测试数据不好控制(无法直接读取或存储json格式)
  2. 测试数据加密不方便
  3. 扩展性不足(复杂业务逻辑)

四、本次学习目标:基于python结合requesrs库实现接口自动化测试

五、Requests库介绍:

  1. 使用python语言编写
  2. 使用开源协议,基于urllib库做的二次封装
  3. 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()

接口自动化测试--入门相关推荐

  1. 11小时 python自动化测试从入门到_从设计到开发Python接口自动化测试框架实战,资源教程下载...

    课程名称 从设计到开发Python接口自动化测试框架实战,资源教程下载 课程简介: 课程从接口基础知识入门,从抓包开始,到接口工具的运用,再到常见接口库.接口开发.Mock服务.unittest框架的 ...

  2. 接口自动化测试,完整入门篇

    一.自动化测试 众所周知,自动化测试已经成为软件项目中不可或缺的测试方法.基于用户交互界面(GUI)的自动化测试方法具有模拟用户行为和过程可视化的特点,因此受到了广大入门自动化人士的喜爱.诸如:QTP ...

  3. 【入门篇】接口自动化测试

    1. 什么是接口测试 顾名思义,接口测试是对系统或组件之间的接口进行测试,主要是校验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系.其中接口协议分为HTTP,WebService,Dubbo,T ...

  4. 接口自动化测试从入门到高级实战(最新干货)

    一.接口测试背景和必要性 接口测试是测试系统组件间接口(API)的一种测试,主要用于检测内部与外部系统.内部子系统之间的交互质量,其测试重点是检查数据交换.传递的准确性,控制和交互管理过程,以及系统间 ...

  5. python自动化测试视频百度云-Python接口自动化测试视频教程下载

    Python接口自动化测试视频教程下载 课程介绍: 此套Python接口自动化测试视频教程适合入门接口测试和学习python+requests自动化的学员学习,教程对http协议.fiddler抓包与 ...

  6. python自动化测试视频百度云-Python接口自动化测试 PDF 超清版

    给大家带来的一篇关于Python自动化相关的电子书资源,介绍了关于Python.接口自动化.测试方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小61.2 MB,王浩然编写,目前豆瓣.亚马 ...

  7. python自动化测试看什么书-Python自动化测试入门,看这一篇就足以

    第一时间关注 Python 技术干货! 阅读文本大概需要 5 分钟. 上篇文章讲了自动化测试的重要性,今天就给大家讲讲自动化框架 Robot Framework 的安装和 demo 演示. 为什么选择 ...

  8. python自动化测试视频百度云-python接口自动化测试视频教程全集

    python接口自动化测试视频教程全集 下载地址:https://k.weidian.com/Pfm=DyuI 课程内容: 第一章:接口测试基础 1-1 接口自动化课程简介 1-2 接口测试课程大纲 ...

  9. python接口自动化用例管理_python接口自动化测试(六)-unittest-单个用例管理

    前面五节主要介绍了环境搭建和requests库的使用,可以使用这些进行接口请求的发送.但是如何管理接口案例?返回结果如何自动校验?这些内容光靠上面五节是不行的,因此从本节开始我们引入python单元测 ...

最新文章

  1. H3C 交换机命名规则
  2. 寒武纪首颗AI训练芯片亮相
  3. PostgreSQL的xlog实验一
  4. Vue2.0 + ElementUI 手写权限管理系统后台模板(一)——简述
  5. c++ 单例模式 对全局变量的替代
  6. Oracle单行函数
  7. 深入理解Delete(JavaScript)
  8. Jenkins(Pipeline)
  9. Android Studio系列教程一--下载与安装
  10. Portainer 安装与使用
  11. completable java_java8 CompletableFuture异步编程
  12. java 二进制置位,重置
  13. hadoop2.7.3+hbase1.2.5配合起来使用的一个小问题,备注一下
  14. 水经注下载的地图版权_如何使用水经注万能地图下载器下载谷歌卫星地图
  15. 对天敏电视精灵I老版播放器的修改和分析
  16. java.lang.NoSuchMethodError 之 依赖冲突解决方案
  17. 常见笔记本CPU型号参数和性能对比一览表
  18. Android逆向:去除RE管理器4.41及车来了广告
  19. Calendar 根据指定日期 获取月的第几周
  20. EasyAPI基于电子发票API接口二维码小票对接方案

热门文章

  1. 【移动端】事件(touchstart、touchmove、touchend、touchcancel)跟事件对象属性(changedTouches、targetTouches、touches)
  2. 电子与智能化二级资质承包范围,看完就了解了!
  3. 哈理工软微2019新生赛(同步赛)——小乐乐与二段数【数论】
  4. mac M1 pod install指令
  5. 日语自学资料-N3(免费下载)
  6. TCP/IP 网络协议基础
  7. C++23种设计模式(21)-访问者模式
  8. jquery锚点定位
  9. 如何解决三星S10e美版系统无法跳过Android设置向导的问题
  10. 微信支付, 小程序,公众号, 商户号 需要进行的配置