yii2框架基于codeception进行API接口测试

94 阅读4分钟

可通过官网地址codeception.com/docs/APITes…进行学习,官网说得很清楚,本文只是学习记录,友情提示:结合GPT高效学习。

准备工作

1、安装 Codeception:您可以使用 Composer 在项目中安装 Codeception。在终端中进入项目根目录,然后运行以下命令:

composer require "codeception/codeception" --dev

2、初始化测试套件:在项目根目录中,使用以下命令初始化测试套件:

vendor/bin/codecept bootstrap

这会创建一个 tests 目录,并在其中创建一些默认的测试文件和配置文件。

3、配置测试套件:您需要根据您的项目需求配置测试套件。在 tests 目录中,有一个名为 codeception.yml 的配置文件,其中包含了测试套件的配置信息。您可以根据需要修改该文件。

一旦您完成了上述准备工作,就可以执行 php vendor/bin/codecept build 命令来构建测试套件了。该命令将根据测试套件的配置信息生成测试文件和测试类,并将其保存在 tests/_support 目录中。

4、然后要进行api接口应创建一个新的测试套件(bootstrap 命令未提供)。我们建议将其命名为 api 并使用 ApiTester 类。

php vendor/bin/codecept generate:suite api

输入以上命令后,Codeception会在tests目录下创建一个名为api的文件夹,并在其中创建一个空的api.suite.yml文件。

打开api.suite.yml文件,根据需要配置测试套件的参数,例如测试环境、测试用例、测试模块等。

完成以上步骤后,就可以使用api测试套件来编写和运行接口测试用例了。

API测试配置

api.suite.yml是Codeception测试框架中用于配置接口测试套件的YAML格式配置文件。该文件通常位于项目根目录下的tests文件夹中。

actor: ApiTester
modules:
    enabled:
        - Filesystem
        - Asserts
        - REST:
            # API 基础 URL
            url: /
            # 请求头信息
            headers:
            - {name: 'Content-Type', value: 'application/json'}
            # 响应断言
            depends: Yii2

使用REST模块进行API测试需要安装codeception/module-rest依赖包,可以通过Composer进行安装,运行命令:

composer require codeception/module-rest --dev

安装完成后,就可以在api.suite.yml中启用REST模块,并设置API的地址等配置信息。

:别忘了php vendor/bin/codecept build,然后可在tests/_support/_generated/ApiTesterActions.php路径看到你加载模块成功的方法,比如设置请求头内容$I->haveHttpHeader $I->sendGet注释中带了很多的使用示例,简直就是一学就会。

API测试脚本开发

Yii2 codecept ApiTester接口api测试主要是通过模拟HTTP请求来测试API接口。ApiTester类提供了一系列的方法,如sendGET()sendPOST()sendPUT()sendDELETE()等,可以用来发送HTTP请求,同时还提供了一些辅助方法如seeResponseCodeIs()seeResponseContainsJson()seeResponseMatchesJsonType()等,用于断言HTTP响应的状态码、响应内容等。通过这些方法可以方便地对API接口进行测试。

使用 generate:cest 命令创建测试,并将套件和测试名称作为参数:

php vendor/bin/codecept generate:cest api Upload

生成文件tests/api/UploadCest.php

<?php
class UploadCest
{
    public $uploadData;
    public $file;

    public function _before(ApiTester $I)
    {
        //加载yii模块内容
        $config = require(__DIR__ . '/../../config/test.php');
        new \yii\web\Application($config);
    }
    public function tryToTest(ApiTester $I)
    {
        $I->wantTo('上传文件');
        $I->comment('默认参数上传文件text.txt');
        $I->sendPost('/upload', [
            'data' => json_encode($this->uploadData),
        ],[
            'attachment_1' => $this->file,
        ]);
        $I->seeResponseCodeIsSuccessful();
        $I->seeResponseContainsJson(['code' => 0, 'msg' => 'success']);
    }
}

执行以下命令即可运行API测试:(注意api大小写)

php vendor/bin/codecept run api

或者

php vendor/bin/codecept run api UploadCest

输出报告

php vendor/bin/codecept run api --debug --html 

执行run 可配置输出报告参数,官网链接查看codeception.com/docs/Report…

清晰的报告提供了系统当前状态的全貌。哪些测试通过了,哪些测试失败了,如果失败的原因是什么。报告的详细程度和收集的技术信息各不相同。Codeception 提供内置报告器和可定制的 API,以便创建自己的报告器。

codecept-cli.png

比如我经常使用的,可查看代码执行过程中你程序输出的埋点日志,比如Yii框架就是Yii:info("this is a info");最后还有一个html的测试结果报告,一般报告文件路径在tests/_output/report.html

codeception-html.png

其他系列文章