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入门相关推荐

  1. Composer入门

    2019独角兽企业重金招聘Python工程师标准>>> Java有Maven, Node.js有npm, ROR有gem, 这些语言的程序员在开心地使用包管理工具加速开发效率时,PH ...

  2. 【JAVA】Dozer 介绍及快速入门教程

    文章目录 概述 使用 安装 入门 XML 映射 注解映射 SpringBoot 集成 结语 概述 Dozer 是什么? Dozer 是 Java Bean 到 Java Bean 的映射器,他以递归的 ...

  3. 用Construct 2制作入门小游戏~

    今天在软导课上了解到了Construct 2这个神器,本零基础菜鸟决定尝试做一个简单的小游戏(实际上是入门的教程啊= = 首先呢,肯定是到官网下载软件啊,点击我下载~ 等安装完毕后我便按照新手教程开始 ...

  4. Docker入门六部曲——Swarm

    原文链接:http://www.dubby.cn/detail.html?id=8738 准备工作 安装Docker(版本最低1.13). 安装好Docker Compose,上一篇文章介绍过的. 安 ...

  5. Docker入门六部曲——Stack

    原文链接:http://www.dubby.cn/detail.html?id=8739 准备知识 安装Docker(版本最低1.13). 阅读完Docker入门六部曲--Swarm,并且完成其中介绍 ...

  6. Docker入门六部曲——服务

    原文链接:http://www.dubby.cn/detail.html?id=8735 准备 已经安装好Docker 1.13或者以上的版本. 安装好Docker Compose.如果你是用的是Do ...

  7. 【springboot】入门

    简介: springBoot是spring团队为了整合spring全家桶中的系列框架做研究出来的一个轻量级框架.随着spring4.0推出而推出,springBoot可以説是J2SEE的一站式解决方案 ...

  8. SpringBoot (一) :入门篇 Hello World

    什么是SpringBoot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不 ...

  9. 入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集-深度学习问题

    入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集 GT_Zhang关注 0.1012019.08.01 18:43:34字数 1,874阅读 795 Hi,欢迎各位来自Paddl ...

最新文章

  1. 【C++ 语言】容器 ( queue 队列 | stack 栈 | priority_queue 优先级队列 | set 集合 | 容器遍历 | map )
  2. 日常总结:自学操作系统基础的一些领悟
  3. 即时通讯音视频开发(一):视频编解码之理论概述
  4. c++11-type_traits类型萃取
  5. [html] html标签中的lang属性有什么作用?
  6. 第10章 部署Exchange2010 部署边缘服务器
  7. QT中让窗口屏幕居中的方法
  8. php mysql not in_php – MySQL – NOT IN产生不需要的结果
  9. 用Eclipse写java
  10. python怎么用for循环找出最大值_从“for in”循环中获取最小值和最大值
  11. IronPython for ASP.NET 部署注意事项
  12. 用CSS Houdini画一片星空
  13. 9月29日 胶囊网络
  14. 二次无约束二值优化模型(The Quadratic Unconstrained Binary Optimization(QUBO) model)
  15. 帝国PHP二次开发,帝国CMS二次开发基本问题汇总
  16. Unity Application Block 1.0系列(5): 使用BuildUp让已存在对象实例也支持依赖注入
  17. 企业邮箱设置,企业邮箱服务器怎么设置?
  18. 基于Python(Django)+MongoDB实现的(Web)新闻采集和订阅系统【100010319】
  19. 【计算机组成原理】微命令 微指令 微操作 微程序
  20. 【春节闲聊】程序员如何打破35岁魔咒

热门文章

  1. GPS脚环计步、AI“鸡”脸识别,如何确保自己吃到了一只幸福健康的鸡
  2. 幼儿园计算机基础知识培训总结,幼儿园园本培训工作总结
  3. Linux工控主板的多通道高速并行采集方案(基于libiio)
  4. 火水未濟 (易經大意 韓長庚)
  5. Nginx可视化配置工具—NginxWebUI
  6. easyUI打开tab页面
  7. vscode 用户设置与工作区设置
  8. ubuntu18.04鼠标可以移动但是无法点击解决方法
  9. 苹果企业签名独立、非独立什么意思?
  10. Python3:私有成员