很多站长朋友们都不太清楚php接口测试实例,今天小编就来给大家整理php接口测试实例,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 PHP中使用Guzzle进行API测试 2、 怎么用PHP开发API供其他客户端调用? 3、 软件测试之接口测试核心-URLamp;HTTP协议详解重磅来袭,转发收藏 4、 简单获取新浪短网址API接口的方法(附PHP请求示例) 5、 Postman接口测试之:Postman实现接口请求(1) PHP中使用Guzzle进行API测试本文将介绍 Guzzle , Guzzle 在单元测试中的使用。
来自 Guzzle 中文文档的解释:
使用 composer 安装
或者编辑项目的 composer.json 文件,添加Guzzle作为依赖
执行 composer update
或使用 query 请求参数来声明查询字符串参数:
传入 form_params 数组参数
同Guzzle的安装, 也适用Composer工具。
或者在composer.json文件中声明对phpunit/phpunit的依赖
执行安装
我们在 tests\unit\MyApiTest.php 中定义了两个测试用例
在项目根目录执行命令
通过 Guzzle 强大的功能,可以方便进行API单元测试。大家可以查看 Guzzle 文档,详细了解 Guzzle 的使用。
怎么用PHP开发API供其他客户端调用?一、接口的分类:
1、URL类型的接口
URL
路由带参数式的接口!这个很好做!只要有过Web开发经验的人都能完成!这种接口数据不够隐蔽性,可以直接在浏览其中看到,如支付宝的交易请求URL。需
要加一个MD5签名,和服务器端的再次向支付宝服务器发送验证!虽然soap方式传递的数据隐蔽性很好!但为了数据安全,难免也需要进行数据签名。
2、SOAP类型的接口
无关编程语言、无关平台、扩展性很好,要实现一个SOAP 型的接口,有两种方式:一种有WSDL文件方式、一中无WSDL文件方式!
对
于热爱研究型的人来说,使用第一种方式可以让你清楚的了解PHP是怎么创建了一个Web
Service!但第一种对于新手来说,创建一个XML格式的WSDL文件,是比较难的,这你的先了解熟悉什么是XML!学会XML语法!但对于一个急于
解决问题的人来说!没有这么多的时间去熟悉!所以这是件烦恼的事!
二、PHP环境设置
先配置下PHP的soap环境支持:
找到php.ini文件
;extension=php_soap.dll
删除掉";" ,重启apache服务器
为了便于测试,需要关于wsdl缓存
方式1:
配置文件:php.ini 选项 soap.wsdl_cache_enabled 设置为0
方式2:
代码头添加:ini_set('soap.wsdl_cache_enabled', "0"); //关闭wsdl缓存
三、有WSDL文件方式创建
在
这里先介绍标准的webservice。 那么如何创建wsdl呢?对于PHP来说这确实是件很不容易的事情,有人说用zend
studio创建很方便,这是一种方法。但对于那些不喜欢用zend studio的人来说,会觉得创建一个web service还要安装zend
studio,太强人所难了。
在这里介绍一个简单的方法,到网上下载SoapDiscovery.class.php类,里面有个公用方法:getWSDL,这个方法末尾是用的 return,那么,你修改一下这个方法:
//return sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, '</definitions>');
//生成wsdl文件,将上面的return注释
$fso = fopen($this->class_name . ".wsdl" , "w");
fwrite($fso,
sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL,
$serviceWSDL, $messageWSDL, '</definitions>'));
现在生成wsdl的类有了,SoapDiscovery.class.php(源码在最末尾)。
再准备一个提供服务的Service.php类文件或者函数就可以创建wsdl了!
软件测试之接口测试核心-URLamp;HTTP协议详解重磅来袭,转发收藏URL:统一资源定位符。
URI:统一资源标识符。
URL可以看作是URI的具体实现。
·protocol
·domain
·port
·path
·url parameters
示例:
协议,一般是指://之前的部分,表明通信双方所采用的通信协议。
协议:是指通信双方对于通信的数据所采用的数据格式、规程、含义等所作的约定。
对于协议,建议大家了解两个模型:OSI模型和TCP/IP模型。
从接口测试的角度来说,在不同的通信层可以通过不同的协议来实现接口的测试。
一般来说,应用层的协议是最接近用户,最容易实现的。
常见的应用层协议有:
http
https http+ssl
ftp
ssh
smtp
pop3
mysql
oracle
MS SQL
是指://之后的服务器地址。域名可以是真实的服务器机器的机器名、IP地址、虚拟的域名。
示例:
ke.qq.com
192.168.1.100
是指通过冒号连接在域名之后的数字。
端口:0--65535
端口是由服务器自身来进行设定的,是服务器用来发布服务,监听客户端的请求的。
如果服务器所设置的监听端口是所提供服务的通信协议的默认通信端口,则用户在访问服务器时,可以省略端口。
常见的协议及其默认的通信端口:
http 80
https 443
ftp 21
ssh 22
smtp 25
pop3 110
mysql 3306
oracle 1521
MS SQL 1433
是指在端口之后的所有内容。
一般来说path是指我们要访问的资源or服务在服务器的容器下的路径。
通常path就会和接口的功能直接挂钩。
URL地址参数也是属于PATH的一部分。
url地址参数是指通过问号的方式连接在path之后的部分。
url地址参数采用的是键值对的方式传递参数值,多个键值对之间使用作为连接符。
http协议:HypeText Transfer Protocol,超文本传输协议。
目前来说,http协议是绝大多数服务首选的通信协议。
http协议是一种基于request(请求)和response(响应)的协议。
这就意味着http协议是分为两个部分:
·http request:http请求,是用来定义请求的发送者应该如何去组织数据。
·http response:http响应,是用来定义请求的处理者应该如何去组织返回的数据。
http请求是由三个部分构成:
请求行是指请求数据包中的第一行内容。
示例:GET /phpwind/ HTTP/1.1
一般来说,请求行中包含以下信息:
所有的http请求都必须有请求方法,如果没有指定,则默认为get方法。
常见的请求方法有:get、post、put、patch、delete、options、trace、header等。
接口使用何种请求方法,和测试没有关系,只和设计、开发有关系。
get和post的区别:
请求路径就是指URL中的路径部分,包含url地址参数。
请求头是指请求数据包中从第二行开始到第一个空行截止的所有内容。
请求头是客户端用来和服务器进行交互信息、控制信息的交互的,通常和业务本身是没有关系。
请求头是键值对应的。
标准的请求头都是有其特殊的含义和作用的。
比较常用的请求头:
· User-Agent :简称UA,客户端用来告知服务器,客户端的环境信息。
PS:服务器通常会根据该信息头来判断客户请求的来源。
session和cookie的维持和该请求头有关(一致性)。
· Content-Type :如果请求body中有数据,则该信息一定要添加。
PS:
·该信息头是用来告知服务器,请求主体中的数据的数据组织格式。
常见的组织格式有:
键值对格式:
示例: aaa=1bbb=2
混合表单格式,多用于文件上传类型的接口。boundary表示分隔符,实际的请求主体中的分隔符比请求头中的分隔符要多"--"。
表示发送的是json格式的数据。
示例:{"aaa":1,"bbb":2}
·请求中具体使用何种格式的数据组织格式,由接口本身决定。
·要避免在全局请求头中使用Content-Type。
·c ookie、token :状态相关的信息头。一般来说cookie不用额外处理。
token这样的信息头基本上都需要做关联处理。
是指请求数据包中从第一个空行开始到最后的所有内容。
·请求主体一般都是和业务相关的,是客户端发送给服务器的业务数据。
·请求主体中的数据是有特定组织格式(Content-Type),由开发决定,和测试无关。
·查看请求数据,建议通过raw格式。。尤其是进行调试的时候。
一般来说http响应也是分为三个部分。
·response line:响应行
·response headers:响应头
·response body:响应主体
响应行是指响应数据包中的第一行内容。
通常来说包含下列信息。
示例:
HTTP/1.1 200 OK
响应代码,又叫status、status code,状态、状态码。
响应代码是服务器用来告知客户端,服务器对于请求的通信逻辑层面的处理结果。
响应代码是三位长度的数字,根据首位数字的不同,可以分为5类。
1xx:表示连接建立过程中的交互、控制信息。
2xx:表示服务器处理成功,典型就是200.
3xx:表示重定向。
PS:1xx、2xx、3xx都表示请求成功,即服务器正常工作。
4xx:表示客户端错误。
如:400、401、403、404、405
5xx:表示服务器错误。
如:500、502、501
PS:在接口测试时,不论出现4xx、5xx都表示脚本出错了。
脚本出错有两种情况:
·协议层面:http请求的格式组装问题。
·业务层面:业务相关的数据不合法导致。
PS:一旦出错,我们需要做的就是去对比成功的请求数据包(包含头和body)和失败的请求数据包。
响应头是指响应数据包中从第二行开始到第一个空行截止的部分。
响应头是服务器用来告知客户端,服务器的一些交互、控制信息。
比较常见的:
set-cookie:是服务器用来返回cookie给客户端。
响应主体,是指响应数据包中从第一个空行开始到最后的所有内容。
·响应主体有可能是压缩、编码的,有些测试工具会自动处理,有些需要编程处理。
·响应主体一般都是服务器对于接口的处理结果,和业务相关。
这就意味着我们要判断一个接口的功能是否正确,或者要提取服务器返回的数据,通常都要对响应主体进行操作。
简单获取新浪短网址API接口的方法(附PHP请求示例)新浪短网址api是新浪官方对外公开的短网址生成接口,可以将冗长的链接地址缩短生成 t.cn 格式的短链接,下面分享一个获取新浪短网址API接口的方法以及接口请求方法。
1、在线使用
将API地址中 "" 的部分换成自己的长网址,然后复制前往浏览器中粘贴打开就能生成了。
2、请求接口
如果嫌在线生成的流程很麻烦,可以将API接口对接到程序中请求生成,请求示例如下。
PHP请求示例:
Java请求示例:
Python请求示例:
1、调用API接口时,只需将 “”换成需要缩短的长链接即可。
2、接口支持链接中带参数,但要注意的是当链接中出现 符号时,请用 %26 代替(或者使用url编码),否则参数可能会丢失。
3、更换链接时,必须要以http(s)://开头,否则可能会导致短网址生成失败或者生成的短网址无法跳转访问原网站。
4、上文提到的新浪短网址API接口,经测试都是比较稳定的,觉得好用记得收藏一下,以免丢失。
1、长链接转换后,为什么结尾的参数丢失了?
答:因为长链接中含有特殊字符,需要将url编码后再使用接口生成。
2、接口没有返回结果,是什么情况?
答:有些时候接口返回数据会有延迟,超时未返回即生成失败,也就不会返回结果;或者是因为原链接被封了。
3、生成的短链接有效期是多久?有没有访问次数限制?
答:生成的t.cn短链接是永久有效的,没有点击次数限制,可以放心使用。
Postman接口测试之:Postman实现接口请求(1)课程实例使用的url地址汇总:
开源接口部分:
1、获取时间get接口
2、网易新闻post接口
3、百度ip接口 ;co=resource_id=5809t=1636461955537ie=utf8oe=gbkcb=op_aladdin_callbackformat=jsontn=baiducb=jQuery110206769724197850711_1636461449011_=1636461449013
电商项目部分: 电商网站:
4、电商登录接口:;c=Usera=do_logint=0.9806405470978172
5、文件上传接口 :
自动化平台项目:平台网站:
6、平台登录接口:
Token接口项目:Token项目网站:
7、Token项目 SOAP接口:
1、 Postman 安装之后, 可以进行一下更新。
使用的时候最好可以注册一个账号。
先创建一个workspace,用于管理接下来使用过程中产生的内容。
2、接口测试的基本流程: 本质就是抄。
1、了解接口信息 : 由开发提供接口文档, 或者通过抓包来获取接口报文信息。
2、 设计测试用例
3、 执行测试用例: 用postman等工具执行。 请求发包。
4、验证返回结果。
3、 HTTP协议接口报文: 理解成寄快递。
接口报文分为请求和返回,格式其实是相同的。
请求
请求四要素: http方法 、url地址、请求头 、请求体。
请求行: http方法(邮寄方式) url(地址) http协议版本
请求头: 键值对格式 ,键:值 用换行分割的方式。 (快递单)
除了特殊指定的要填的请求头以外,注意 post请求 需要关注content-Type请求头,表示的是请求体的编辑格式。(快递的运输方式 常温/冷冻)
常见的content-Type类型:
application/x-www-form-urlencoded: url编码格式: 键=值键=值
application/json: json格式字符串: {"键":值,"键":值}
postman选 raw格式之后,下拉栏选择json
注意:复制json格式的请求体的时候,如果从浏览器开发者工具中复制,记得确认键必须带双引号。最好view source 之后再复制。
multipart/form-data: 用于进行文本和文件的混合传递。 完成文件上传。
选择posmtna中的 form-data进行参数填写。
注意: Name空格中,可以选择下拉 file或者text。
文件用file上传,文本用text上传。
text/xml: 用xml格式来进行传递。 <键>值</键>
选择 body中的 raw格式 ,下拉栏用xml进行填写:
注意:content-type postman会默认使用 application/xml,需要自己确认,到底是text/xml还是application/xml,如果不对,进行修改,最后是直接去掉原有的,加一个新的content-type头。
请求体 : 请求头之后空一行 ,之后的就是请求体。 (寄的东西)
返回
返回行:http协议版本 HTTP状态码(物流状态) 状态码描述
返回头: 键值对格式 ,键:值 用换行分割的方式。 (快递单)
返回体 :返回头之后空一行,就是返回体 (对方寄回的东西)
返回:重点验证返回体。
4、http协议抓包:
使用浏览器开发者工具抓包:
在网页上右键检查,或者按下F12,打开开发者工具,切换到network 界面。
注意:记得勾选 preserve log。
请求体中:request payload (json格式、xml格式和普通文本) 和form data (文件和x-www-form-urlencoded格式)
使用 fiddler /charles 等http抓包工具抓包:
在fiddler菜单右侧,用inspector 选项进行查看,选raw(原始)格式能够直观看到报文格式。
http是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
http协议是基于url地址的资源请求协议
5、用postman发送报文请求:
1、http 方法 和 url 进行填写。 注意 url中最后带上的空格也会有影响,所以千万注意。
2、请求头一般先不做过多关注,先用默认的,除非有明确的说明需要设置某个请求头。
3、请求体在postman 请求栏的body中进行设置。选择相应的content-type格式进行编辑,可以自动设置,不用自己设置 请求头中的 content-type。
6、unicode编码: \u 4位16进制数,用于表示某个特殊的字符。
例如:\u7f8e\u56fd\u963f\u62c9\u65af\u52a0
7、get和post的核心区别:
get方法,通常不带请求体。
而post方法可以携带请求体。
END
关于php接口测试实例的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php接口测试实例 php接口开发示例代码的详细内容...