前言:
此刻咱们对“python接口测试用例”都比较看重,你们都需要学习一些“python接口测试用例”的相关文章。那么小编同时在网络上汇集了一些关于“python接口测试用例””的相关资讯,希望同学们能喜欢,大家一起来了解一下吧!一.关于接口的介绍
什么是接口:不同的系统和功能之间实现连接的口,可分为硬件接口和软件接口。
1.1接口的分类
硬件接口:如我们常见的USB接口,耳机接口等 (硬件接口 起到了数据传输的作用)。
软件接口:软件不同部分之间的交互接口,即我们常见的API接口(Application Programming Interface,简称API),也称为应用程序接口。例如:支付宝支付接口,微信支付接口(通俗讲:别人写好的代码,或者编译好的程序,提供给你使用,就叫作api 调用的时候需要鉴权码token,即鉴定是否有权限去调用该接口)。
再举个常见例子给大家介绍一下什么是API,比方说你在淘宝上下单付款之后,商家使用顺丰发货,然后你就可以在淘宝上实时查看顺丰的物流信息。那我们想一下,淘宝和顺丰作为两家独立的公司,为什么会在淘宝上可以实时查看顺丰的物流信息呢,这就用到了API,当查看自己快递信息时,淘宝平台利用了顺丰提供的API接口,可以实时调用物流信息呈现在自己的网站上。
1.2 软件接口的分类
内部接口:开发人员自己开发,对自身系统提供的接口,一般为了尽早介入测试,所以一般接口开发完,测试人员就可以进行内部的接口测试。
外部接口:公司外部提供的接口(提供给第三方使用)
例如:我们自己的开发系统调用调用某信,微信供我们调用的接口为外部接口。
2 .为什么需要接口?
因为可以通过接口这个途径,让内部的数据被外部调用或进行修改。比方说通过微信充值可以改变你卡里的余额。
3.为什么需要做接口测试?
1)现在很多系统前后端是分离的,因为前后端工作进度不一样,所以我们要针对首先出来的接口,以及需要调用其他公司的(银行等)一些接口进行接口测试及验证数据
2)另外,前端验证很容易被绕过,直接请求接口的信息,比如说身份证信息,涉及到金钱交易时。
3)为了尽早介入测试,尽早发现问题。
4.接口测试的重点
测试接口参数传递的正确性,接口功能的正确性,输出结果的正确性,及对各种异常情况容错能力和权限控制。
"接口测试的本质,就是接口的功能测试,是测试接口能否正常的交互数据,通过调用接口,输入一些数据,随后接口返回一些数据来验证接口返回数据的正确性。"
二.Postman简介
Postman 是谷歌开发的一款网页调试和接口测试工具,在我们做接口测试的时候,相当于一个客户端,模拟用户发送任何类型的 HTTP 请求,并将请求数据发送给服务端,从而获取服务端的响应结果,来验证响应结果是否和预期匹配。
1.postman安装
1)下载:
2)安装 双击postman应用程序
双击桌面上postman图标 进入到postman主界面
3)如何使用汉化版postman
下载postMan 汉化包(app.zip) 然后后我们打开postman的安装目录找到app-XXX(XXX为版本号)-resource文件夹,而后将app文件夹复制到此文件夹下即可,然后重启postman运行。(想要领取汉化版的小伙伴可以在评论区回复)
4)界面主要功能介绍
三.关于postman的使用
2.1先给大家介绍一下状态码的知识(通过状态码就能判断和分析服务器的运行状态)。
当用户在浏览网页的时候,浏览器会返回一个htttp状态码,主要是用来响应浏览器的请求。通常情况下,一般是3位数字,所有的状态码的首位数字就代表着是什么状态。
状态码首位数字决定了不同的响应状态,有如下:
2 表示成功4 表示请求错误5 表示服务器错误
常用HTTP状态码使用场景,小白直接看 200、400、401、403、404、500 就可以了
200(成功):请求已成功,请求所希望的响应头或数据体将随此响应返回
400(错误请求):服务器不理解请求的语法
401(未授权):请求要求身份验证。对于需要登录的网页,服务器可能返回此响应
403(禁止):服务器拒绝请求
404(未找到):服务器找不到请求的网页
500(服务器内部错误):服务器遇到错误,无法完成请求
2.2以【获取access_token】为例 创建GET请求和POST的请求如下:
创建collection集合--创建请求----设置HTTP GET请求,并在HTTP请求中输入请求方法,请求URL地址及请求参数
其次创建HTTP POST请求,前一个HTTP请求的响应结果值 是第二个HTTP请求的参数值。
GET和POST是HTTP于服务器交互的方式,常见的请求方法有GET和POST两种,两者区别如下:
1.GET请求用来获取数据,POST请求用来发送数据。
2.GET是把请求的数据放在了URL地址里(如上图所示)格式为:GET+url 地址 ? +传输数据,参数之间用&隔开。get请求没有请求体,如下图所示
而POST把 "数据"放在了HTTP请求体中 如下图所示。
3.GET的参数安全性比较差(因为在url地址中易获取)而GET 的参数安全性高 在body体中
4.GET的URL 在长度上会有限制,而POST没有。即get的参数长度受限,而post的参数长度不受限。
5.GET请求可以直接访问浏览器,而POST请求不能直接使用浏览器访问 ,如下图所示!
2.3为什么要设置环境变量和全局变量
在平时接口测试过程中涉及开发环境,测试环境及生产环境,每种环境对应的IP地址不同,所以在接口测试期间,需要经常修改API地址,这样效率比较低。而且有时候需要调用上一个接口的返回值,手动修改参数也比较慢。
两者区别 :环境变量就是全局变量,而全局变量可以在任何接口里面访问的变量。
获取环境变量和全局变量的值 通过:{{变量名}}
2.4 关于postman的接口关联
postman接口关联思路如下
1.获取上一个接口的返回值
2.将返回值设置成环境变量或者全局变量
3.设置下一个接口的参数形式
接口关联2种方式
1.使用JSON提取器实现
var result=JSON.parse(responseBody); //返回响应结果,提取token值
pm.globals.set("access_token",result.access_token);//把token设置成环境变量供下个接口用
补充一下:什么是JSON格式
数组 格式:{ "key": value} 示例: {"key1":100}字符串格式:格式:{ "key": "value"} 示例: {"key1": "张三"}数组 格式:格式:{ "key" : [value]} 示例:{"key" : [000, 111111]}对象 格式:格式:{ "key": {value}} 示例: {"key” : {"1": "亚索"}}
具体步骤如下:
首先,在GET请求中-Tests中录入代码,获取access_token的值 并把它设置为全局变量 ,Tests模块是后置模式,可以对响应结果进行处理。此时我们可以通过给变量赋值的形式把响应结果保存到变量中。
其次,在post请求参数中引用access_token的值,格式为:{{access_token}}
2.使用正则表达式实现【关联步骤同上】
1)使用正则表达式提取token值 //正则表达式提取器 match 匹配
var value=responseBody.match(new RegExp('"access_token":"(.+?)",'))
console.log(value[1])
pm.globals.set("access_token", value[1]);
2)在第二个接口中使用{[1]}方式取值:{{access_token}}
2.5关于postman的参数化
什么是参数化?
参数化本质上就是不写死接口数据,而是把数据存放在变量内。
为什么要做参数化?
业务功能的需要,如果写死数据在脚本内,每一次运行脚本,都要手动修改数据,而且有时候测试时需要用到大量的数据,通过手动修改不可能实现。
案例:比如注册接口,注册一个账户后就不能重复注册了,为了可以重复执行这个接口,我们可以把这个接口的请求参数改成一个可变化的值,这样每次注册时,参数随机生成 就能注册成功了。
postman参数化的三种方式如下:
1.动态函数实现参数化
先给大家举2个常用的变量:{{$timestamp}} 表示生成当前时间的时间戳
{{randomInt}}表示生成随机数0-1000
步骤:
在请求参数中输入: {{$}} 当鼠标停留在美元$符合后时,自动出现随机变量 引用即可,记得在英文状态下 双引号内" "。
2.文档参数化
批量导入参数 进行测试 ,postman支持json文档,txt文档,csv文档。
具体步骤:以csv文档为例
1.准备参数化文件
2.设置请求参数的变量(注意:变量名要和txt文档中的变量名一致)
3.导入测试文件运行集合即可(注意:运行之间注意文件格式是否匹配,即可以提前预览查看是否有乱码情况)
案例:以某电商平台登录接口为例
1)输入导入数据以.csv格式保存
2)变量名要和txt文档中的变量名一致,输入完记得先保存
3)注意文件选择正确的文件格式,以及提前预览一下内容 是否有出现乱码情况,如果有乱码情况 重新保存 csv文件,并设置为:utf-8即可
4)如下图批量测试用例运行成功,可在响应正文中参考输入参数是否正确(未设置断言)
3.全局变量
全局变量是将这个变量设置成整个程序的都可以用,不用去区分环境设置。注意:当环境变量和全局变量 设置同一个变量时,优先使用环境变量。没有环境变量时,才优先使用全局变量
具体步骤
1.打开Postman,点击右上角的环境快速查看按钮
2.选择Global,设置全局变量
3.输入你要设置的变量名和变量,点击Save,进行保存
4.引用全局变量,引用的方法为:{{变量名}}
2.6关于postman的断言
1)什么是断言:断言就是验证实际结果和预期结果是否一致,如果一致则用例通过,否则用例失败。从而判断是否是一个bug。
2)完整的接口测试:请求--响应正文--断言
3)断言的常见方法如下
Status code:Code is 200 检查返回的状态码是否为200
response body:contains string验证响应数据是否包含了某一字符串
response body:is equal to a string验证响应数据是否等于某一个字符串
response body:json value check校验返回结果中某个字段是否等于某个值
案例1:获取接口统一鉴权码 access_token,业务关键词:鉴权码 所以可以使用
response body:contains string验证响应数据是否包含了某一字符串
(其他函数使用方法一致,不再赘述)
四.postman和Jmeter的区别
1.断言方面Postman用函数断言, Jmeter用元件进行断言。
2.创建HTTP请求方面Postman请求的请求URL是一个整体,Jmeter分成了4个部分(协议、主机、端口、路径)。
3.请求头方面Postman可以在请求中直接填写请求头信息, Jmeter需要通过添加http信息头管理器来添加请求头。
4.支持的接口类型Jmeter的功能更强大,可以测试各种类型的接口,不支持的也可以通过网上或自己编写的插件进行扩展 postman常用来测试Rest接口。
5.执行方面Postman:可以通过newman实现批量执行和保存结果Jmeter:可以通过ant实现批量执行和保存结果。
各位小伙伴 如果觉得有错误的地方 可以在评论区回复,咱们一起讨论,关注我 一起学习软件测试,一起进步[耶]
标签: #python接口测试用例