自动化REST API 测试(基于Yii2)

前言

Yii2是一款非常优秀的PHP框架,Yii2的官方发行版整合了codeception测试框架。在使用Yii2框架的项目中,我们可以非常方便地利用codeception进行单元测试、功能测试、验收测试和API测试等。现在下面主要介绍API测试

API测试主要用来测试接口

准备安装

1、确保已经安装了composter,没有安装自行安装

2、在项目根目录运行命令

composer require "fxp/composer-asset-plugin:*"

composer require "codeception/codeception=*"

composer require "codeception/specify=*"

composer require "codeception/verify=*"

composer require flow/jsonpath

3、下载codecept.phar文件

链接:http://codeception.com/codecept.phar

参考:http://waqqas-blog.logdown.com/posts/261868-automated-testing-of-a-restful-api

下载好后(如果下载不好可以按照参考资料来,直接下载比较方便)将文件放在项目的根目录中 

配置codeception

1、执行如下命令

windows:php vendor\codeception\codeception\codecept bootstrap
linux: vendor\bin\codecept bootstrap

 这行命令将创建一个codeception.yml文件和test目录(根据自己的实际目录执行命令我的是基础版yii)

2、修改codeception.yml,如下:

actor: Tester
paths:
    tests: tests
    log: tests/_output
    data: tests/_data
    helpers: tests/_support
settings:
    bootstrap: _bootstrap.php
    memory_limit: 1024M
    colors: true
modules:
    config:
        Yii2:
            configFile: 'config/test.php'
            cleanup: false
     #   Db:
     #       dsn: 'mysql:host=localhost;dbname=televod'
     #       user: 'test_televod'
     #      password: 'test_televod'
     #   Db是情况配置我的没有配置     

添加测试套件

1、执行如下命令

vendor\bin\codecept generate:suite api
# windwos下行首可加php

这将在tests目录下创建api.suite.yml文件和api目录

2、修改api.suite.yml文件,如下:

class_name: ApiTester
modules:
    enabled: [PhpBrowser, REST]
    config:
        PhpBrowser:
            url: http://域名
        REST:
            url: http://域名
            depends: PhpBrowser
            depends: Yii2

3、在api目录下添加一个测试文件

vendor\bin\codecept generate:cept api CreateUser
# 或者
vendor\bin\codecept generate:cest api CreateUser # 文件内会自动创建测试类

4、执行如下命令构建测试

vendor\bin\codecept build

写测试

编辑文件CreateUserCest.php

 // tests
    public function tryToTest(ApiTester $I)
    {
        $I->sendPOST('terminal/getterminal',['page'=>1,'ter_account'=>1]);
        $I->seeResponseCodeIs(\Codeception\Util\HttpCode::OK); // 200
        $I->seeResponseIsJson();
//        $I->seeResponseContains('"code":1');
        $I -> seeResponseContainsJson( ['code'=>1] );
//        $I ->dontSeeResponseContainsJson(["ter_account"=>"16678786767"]);
    }

运行测试

vendor\bin\codecept run api
# api后面可指定文件名,不加会执行所有测试文件

猜你喜欢

转载自blog.csdn.net/jiuyue9561/article/details/85761379