可通过官网地址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,以便创建自己的报告器。
比如我经常使用的,可查看代码执行过程中你程序输出的埋点日志,比如Yii框架就是Yii:info("this is a info");最后还有一个html的测试结果报告,一般报告文件路径在tests/_output/report.html
其他系列文章