基于Python的接口自动化-01
为什么要做接口测试
当前互联网产品迭代速度越来越快,由之前的2-3个月到个把月,再到班车制,甚至更短,每次发版之前都需要对所有功能进行回归测试,在人力资源有限的情况下,做自动化测试很有必要。由于UI更新较快,如若页面交互比较复杂,UI自动化测试将变得更加难以维护,相较之,接口自动化就显得比较简单且易于维护。此外,UI自动化测试其操作的也是数据,因此接口自动化是最简单的
如何做接口测试
本文主要讨论通过request库模拟发送Http请求,主要是get、post请求,同时使用unittest库来写测试case,首先需要导入这两个库哦
import requests,unittest
简单介绍一下get、post请求的区别吧
get:1.从服务端获取数据 2.其请求的参数拼接在url地址后,所以可能导致信息的泄露,因此是非常不安全的
post:1.向服务端发送数据,可能导致服务端数据的变更 2.其请求的数据在请求的body里面,较get请求安全些
模拟get请求
querystring = {"key":"value"}
response =requests.get(test_url,params=querystring)
模拟post请求
data={
"key1":"value1",
"key2":"value2"
}
//一般情况下是json格式的数据,记得两个参数间应用逗号隔开
headers = {
'Content-Type': "application/json",
'Cache-Control': "no-cache",
'cookie':"***********”
}
//这些参数可通过抓包工具,如fiddlers,charles中request中获取
response=requests.post(test_url, data=data, headers=headers)
#response=requests.post(test_url, data=data, headers=headers) 当headers里面没有传必须的cookie时,可在方法里面直接提交
#response=requests.request('POST',test_url, data=data, headers=headers) 一般不用这种方法,知道就行了
测试中肯定会有一件头疼的事情,那就是有依赖的业务如何测试,比如很多都是基于登录状态的
response=requests.post(test_url, data=payload,headers=headers) //获取请求
response_cookies=response.cookies //获取cookies对象
session=response_cookies.get('SESSION_ID') //获取sessionid
cookies={ //组合成cookie对象
'SESSION_ID':session
}
get、post请求可以实现了,自动化测试当然少不了断言了,代码没有人的主观判断,这个时候要用到assert,assertEqual,assertNotEqual,assertTrue,assertIsNone,assertIsInstance等方法
python中assert断言是声明其布尔值必须为真的判定,如果发生异常就说明表达示为假。assert TRUE,“ERRORMSG”
摘自:https://blog.csdn.net/qq1124794084/article/details/51668672
今天就先写这么多,当然还有很多事情可以做
如发送测试报告,借助HTMLTestRunner
如mock测试数据
等等
基于Python的接口自动化-01的更多相关文章
- 基于Python的接口自动化-读写excel文件
引言 使用python进行接口测试时常常需要接口用例测试数据.断言接口功能.验证接口响应状态等,如果大量的接口测试用例脚本都将接口测试用例数据写在脚本文件中,这样写出来整个接口测试用例脚本代码将看起来 ...
- 基于Python的接口自动化实战-基础篇之读写配置文件
引言 在编写接口自动化测试脚本时,有时我们需要在代码中定义变量并给变量固定的赋值.为了统一管理和操作这些固定的变量,咱们一般会将这些固定的变量以一定规则配置到指定的配置文件中,后续需要用到这些变量和变 ...
- 基于Python的接口自动化实战-基础篇之pymysql模块操作数据库
引言 在进行功能或者接口测试时常常需要通过连接数据库,操作和查看相关的数据表数据,用于构建测试数据.核对功能.验证数据一致性,接口的数据库操作是否正确等.因此,在进行接口自动化测试时,我们一样绕不开接 ...
- 基于Python的接口自动化-unittest测试框架和ddt数据驱动
引言 在编写接口自动化用例时,我们一般针对一个接口建立一个.py文件,一条接口测试用例封装为一个函数(方法),但是在批量执行的过程中,如果其中一条出错,后面的用例就无法执行,还有在运行大量的接口测试用 ...
- 基于Python的接口自动化
第一步 Python的安装配置 打开官网: https://www.python.org/downloads/ 目前官网上已经更新到3.6.1啦,有两个版本,大家可以按自己喜欢的去下载,我自己选择的是 ...
- python+request接口自动化框架
python+request接口自动化框架搭建 1.数据准备2.用python获取Excel文件中测试用例数据3.通过requests测试接口4.根据接口返回的code值和Excel对比 但本章只讲整 ...
- 从零学习基于Python的RobotFramework自动化
从零学习基于Python的RobotFramework自动化 一. Python基础 1) 版本差异 版本 编码 语法 其他 2.X ASCII try: raise Type ...
- 基于python的webUI自动化-小白基础篇
最近打算研究一下基于python的webUI自动化,先自学了一下相关基础知识,大概用了一个多月的时间,主要是找视频,一边看视频或者文档一边对照着敲代码运行. 重点强调:一定要一边看一边对照着敲代码运行 ...
- python+pytest接口自动化(11)-测试函数、测试类/测试方法的封装
前言 在python+pytest 接口自动化系列中,我们之前的文章基本都没有将代码进行封装,但实际编写自动化测试脚本中,我们都需要将测试代码进行封装,才能被测试框架识别执行. 例如单个接口的请求代码 ...
随机推荐
- GreenPlum 与hadoop什么关系?(转)
没关系. gp 可以处理大量数据, hadoop 可以处理海量. gp 只能处理湖量,或者河量. 无法处理海量. 作者:SallyLeo链接:https://www.zhihu.com/questio ...
- MVC学习五:Razor布局页面 _ViewStart.cshtml
如图: _ViewStart.cshtml就是MVC中的布局页面/模板页面. 用户访问流程图: 原理:先去执行Views文件夹下[_ViewStart.cshtml]页面,然后同级目录文件夹(上图中的 ...
- UML 类关系图(泛化,实现,依赖,关联(聚合,组合))
UML的构造快包含3种: (1) 事物(4种):结构事物,行为事物,分组事物,注释事物 (2) 关系(4种):泛化关系,实现关系,依赖关系,关联关系 (3) 图(10种):用例图,类图,对象图,包图 ...
- PowerDesign16.6支持Mysql的生成sql脚本中包含Collate信息
当前powerDesign版本:16.6 列上指定:Collation = utf8_general_ci 但是SQL脚本中,列字段没有显示Collect ---------------------- ...
- AngularJS 使用 even 和 odd 表格
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- mui的事件实现(持续更新)
长按事件: mui('.mui-scroll').on('longtap', '.index-tab-item', function(e) { alert("长按生效") }); ...
- Angularjs基础(九)
AngularJS 应用应用程序讲解 实例: <html ng-app="myNoteApp"> <head> <meat charset=" ...
- vs2017中的scanf_s
在visual studio 2017中格式化输入函数不同于其他c/c++编译器使用scanf,而是使用scanf_s. scanf_s相比较于scanf来说更安全,因为使用scanf_s函数需要有一 ...
- Vue2+VueRouter2+webpack+vue-cil构建完整项目实例(附:详细步骤截图)
引用1:https://segmentfault.com/a/1190000008557578 引用2:https://blog.csdn.net/wulala_hei/article/details ...
- JavaScript : CORS和Ajax请求
CORS(Cross-Origin Resource Sharing, 跨源资源共享)是W3C出的一个标准,其思想是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是应该成功,还是 ...