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出来查看返回结果的。我们可以用更多的断言方法来进行测试,具体的方法可查看官方文档。

 

posted @ 2019-03-14 17:13  cfYu  阅读(1027)  评论(0编辑  收藏  举报