接口单元测试php,API 版本 & 自底向上的 PHP 单元测试

产品需求对角色和终端的组合在不断变化,众多不断快速变化的 API 接口代码在产品的演进中日益成为一个问题;经过讨论分析,最终采用 Yii2 的推荐做法,即通过 modules 实现 版本管理;

最近,PHP 单元测试有进展,我们在 ShortUrlService 短链接实现思路 中不仅对内部使用的 service 进行了单元测试,对 ControllerTest 也有尝试;

本文结合 ShortUrlService 的 ShortUrlControllerTest 以及 v1.4 的 DemandControllerTest 来示范一下;

API 版本管理采纳 Yii2 的方案:通过 module 实现 API 版本;

结合原来按版本部署的经验和 Los 根据需求提出的对应分拆 Yar RPC 服务的想法,我们最终采用了 Yii2 的推荐做法;

我们产品需求版本 v1.4,对应 module v14,但在 url 中保持 v1.4/$controller/$action;需求版本由两部分组成:major.minor(大版本.小版本);

1.0, 1.1, ..., 1.9, 2.0, ..., 2.9, ...;小版本只有 0-9;可能会出现这样一个情况:同一个站点,不同页面的 ajax 请求,访问的是不同版本的 API;

同时维护的版本不要超过三个;

自底向上测试自底向上逐步构建;

RPC 首先应当通过测试;

API 基于 RPC 构建可靠服务;

API 接口测试应集中在自己范围内的测试用例,应当由 RPC 解决的,要放到 RPC 解决;

AAffA0nNPuCLAAAAAElFTkSuQmCC

自底向上逐步构建

版本 API 的 URL 形如:r=v1.4/demand/c34;

ShortUrlControllerTest这个示例纯粹是一个示例,旨在说明使用 PHPUnit 如何对 API 接口进行测试;

shorturl/controllers/ShortUrlControllerTest.php 示例;

Guzzle 是一个不错的 PHP HTTP Client,比 cURL 好用;

AAffA0nNPuCLAAAAAElFTkSuQmCC

ControllerTest 示例

DemandControllerTest@dataProvider 是一个很好的尝试,准备多套数据,驱动测试;

AAffA0nNPuCLAAAAAElFTkSuQmCC

@dataProvider 是一个好东西

作者:michael_jia

链接:https://www.jianshu.com/p/69c1e288872c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在VSCode中进行接口测试可以使用REST Client插件。首先,在VSCode的扩展中搜索并安装REST Client插件。然后,在项目目录下创建一个`.http`文件。在该文件中,可以配置请求数据和接口信息。每个接口之间可以使用`###`进行分隔。请求的链接和请求的数据格式需要分开写,需要在它们之间空一行。例如,对于form表单数据的请求,可以按照以下格式进行配置: ``` POST https://xxxxx.com/open/aunnal/xxxx HTTP/1.1 content-type: application/x-www-form-urlencoded phoneNumber=15790000000&sex=0 ``` 如果省略了请求方法,请求将被视为GET方法。如果创建的文件后缀是`.rest`,则需要符合CURL标准的POST请求格式。例如: ``` curl -X POST "http://com.example.com/api/v1/test" -d "Hello World" curl -H "Content-Type: application/json" -X POST -d '{"abc":123,"bcd":"nihao"}' "http://10.233.x.x:8080/test-adapter/testCancelOrder" ``` 通过配置好请求数据后,可以点击"Send Request"按钮或者右键选择"Send Request"来发送请求进行接口测试。这样,使用REST Client插件可以满足前端开发中对接口的调用和测试需求。\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [如何使用VScode软件测试接口](https://blog.csdn.net/u012660464/article/details/127735397)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [vscode中的接口测试插件:REST Client](https://blog.csdn.net/she_jw/article/details/105531222)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值