codeception apiTest入门
codeception的安装可以参考上一篇文章《Linux下codeception安装及使用》,地址为:https://www.cnblogs.com/cfYu/p/10388584.html
安装codeception后,可以看到主要有三种现成的测试suite(套件):functional, acceptence,unit。验收测试(acceptence)与功能测试(functional)大部分相同,只有一点很大的不同:功能测试不必依赖一个运行的着的Web Server,如PhpBrowser。但是,通过试运行验收测试和功能测试,我们会发现,其中的大部分交互都是与前端页面元素、表单等有关,通过点击某个元素进行测试。有一个具体的场景是:当我们在实际开发中,通常是前后端分离的,我们后端如何进行接口测试呢?这时候就需要创建一个新suit:api。具体步骤如下:
1、依旧是在我们的应用程序根目录下,执行命令:
php codecepth.phar generate:suite api
然后我们就可以在tests目录下看到新生成的api套件,如图:
2、接下来我们来认识一下apiTest的一些基本信息:
1)apiTest主要有两种模式:REST和SOAP,两者的区别可参考文章http://blog.csdn.net/idafish/article/details/6308916。
2)REST模式下的配置文件如下:
(1)在web程序根目录下执行以下命令打开配置文件:
vim tests/api.suite.yml
然后在配置文件里面添加以下没有部分:
actor: ApiTester
modules:enabled:- \Helper\Api- REST:url: http://www.ekwing.com //请求的url根路径depends: PhpBrowser //依赖的框架模块,如Symfony, Laravel5, Zend等其他的框架模块part:json //指定数据返回格式,可不填,标识xml和json均可
(2)接着我们执行以下命令来生成一个apiTest的简易类:
php codecept.phar generate:cest api raceList
然后我们可以看到tests/api/racelistCest.php,这时已经生成的简易类。
如图,_before函数是在测试之前进行初始化的,我们可以将一些公共的数据在该方法内进行初始化,每次执行测试前都会先执行该方法。tryToTest方法就是我们要添加测试代码的方法。如下图所示,我们可以添加如下代码进行测试获取racelist接口返回的信息。
由于接口请求之前都需要先登录,所以我们在_before方法里面设置了请求头,在请求头里面添加某个用户的登录cookie,从而仿造用户已登录的状态。然后,我们调用sendPost方法,第一个参数为请求的url,该url会与api.suit.yml文件的url进行拼接,形成我们请求的最终的url,第二个参数为请求需要传送的参数。然后我们通过grabDataFromResponseByJsonPath方法获取接口返回的信息。最后是两个断言方法,apiTest所有可用方法的使用可参见 https://codeception.com/docs/modules/REST.html#sendHEAD。
接着,我们通过以下命令进行测试:
php codecept.phar run api tests/api/racelistCest.php //最后的文件需要输入具体的文件路径,表示只运行该类,不写表示运行所有的apiTest
此时我们会看到报错:
[Exception] JSONPath library not installed. Please add `flow/jsonpath` to composer.json
这是因为grabDataFromResponseByJsonPath方法需要依赖库:flow/jsonpath,我们可以在composer.json文件添加该库,如下:
{ "require": {"codeception/codeception": "*","flow/jsonpath" : "*"}
}
然后执行以下命令来完成依赖库的添加:
php composer.phar update
这时我们可以重新执行测试命令:
php codecept.phar run api tests/api/racelistCest.php
此时我们可以看到测试结果如下:
这时我们可以看到该接口已经完全通过测试,其中的数据信息是由于我var_dump出来查看返回结果的。我们可以用更多的断言方法来进行测试,具体的方法可查看官方文档。
转载于:https://www.cnblogs.com/cfYu/p/10531552.html
codeception apiTest入门相关推荐
- Composer入门
2019独角兽企业重金招聘Python工程师标准>>> Java有Maven, Node.js有npm, ROR有gem, 这些语言的程序员在开心地使用包管理工具加速开发效率时,PH ...
- 【JAVA】Dozer 介绍及快速入门教程
文章目录 概述 使用 安装 入门 XML 映射 注解映射 SpringBoot 集成 结语 概述 Dozer 是什么? Dozer 是 Java Bean 到 Java Bean 的映射器,他以递归的 ...
- 用Construct 2制作入门小游戏~
今天在软导课上了解到了Construct 2这个神器,本零基础菜鸟决定尝试做一个简单的小游戏(实际上是入门的教程啊= = 首先呢,肯定是到官网下载软件啊,点击我下载~ 等安装完毕后我便按照新手教程开始 ...
- Docker入门六部曲——Swarm
原文链接:http://www.dubby.cn/detail.html?id=8738 准备工作 安装Docker(版本最低1.13). 安装好Docker Compose,上一篇文章介绍过的. 安 ...
- Docker入门六部曲——Stack
原文链接:http://www.dubby.cn/detail.html?id=8739 准备知识 安装Docker(版本最低1.13). 阅读完Docker入门六部曲--Swarm,并且完成其中介绍 ...
- Docker入门六部曲——服务
原文链接:http://www.dubby.cn/detail.html?id=8735 准备 已经安装好Docker 1.13或者以上的版本. 安装好Docker Compose.如果你是用的是Do ...
- 【springboot】入门
简介: springBoot是spring团队为了整合spring全家桶中的系列框架做研究出来的一个轻量级框架.随着spring4.0推出而推出,springBoot可以説是J2SEE的一站式解决方案 ...
- SpringBoot (一) :入门篇 Hello World
什么是SpringBoot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不 ...
- 入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集-深度学习问题
入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集 GT_Zhang关注 0.1012019.08.01 18:43:34字数 1,874阅读 795 Hi,欢迎各位来自Paddl ...
最新文章
- 【C++ 语言】容器 ( queue 队列 | stack 栈 | priority_queue 优先级队列 | set 集合 | 容器遍历 | map )
- 日常总结:自学操作系统基础的一些领悟
- 即时通讯音视频开发(一):视频编解码之理论概述
- c++11-type_traits类型萃取
- [html] html标签中的lang属性有什么作用?
- 第10章 部署Exchange2010 部署边缘服务器
- QT中让窗口屏幕居中的方法
- php mysql not in_php – MySQL – NOT IN产生不需要的结果
- 用Eclipse写java
- python怎么用for循环找出最大值_从“for in”循环中获取最小值和最大值
- IronPython for ASP.NET 部署注意事项
- 用CSS Houdini画一片星空
- 9月29日 胶囊网络
- 二次无约束二值优化模型(The Quadratic Unconstrained Binary Optimization(QUBO) model)
- 帝国PHP二次开发,帝国CMS二次开发基本问题汇总
- Unity Application Block 1.0系列(5): 使用BuildUp让已存在对象实例也支持依赖注入
- 企业邮箱设置,企业邮箱服务器怎么设置?
- 基于Python(Django)+MongoDB实现的(Web)新闻采集和订阅系统【100010319】
- 【计算机组成原理】微命令 微指令 微操作 微程序
- 【春节闲聊】程序员如何打破35岁魔咒