install
Doc:https://codeception.com/docs
codeception
Install
composer require "codeception/codeception" --dev
API Testing
composer require "codeception/module-rest" --dev
php vendor/bin/codecept generate:suite Api
Config
api.suite.yml
actor: ApiTester
suite_namespace: Tests\Api
modules:
enabled:
- REST:
url: nginx:8081
depends: PhpBrowser
part: Json
API Create Test
php vendor/bin/codecept generate:cest Api CreateUser
Coding
<?php
namespace Tests\Api;
use \Tests\Support\ApiTester;
class CreateUserCest
{
public function _before(ApiTester $I)
{
}
public function usableUserLoginToTest(ApiTester $I)
{
$I->sendPost('/api/access/token',
[
'account' => 'admin',
'password' => '123456'
]);
$I->seeResponseCodeIsSuccessful();
$I->seeResponseCodeIs(HttpCode::OK); // 200
$I->seeResponseMatchesJsonType(['status' => 'integer']);
$I->seeResponseJsonMatchesJsonPath('$data');
}
public function invalidUserLoginTest(ApiTester $I)
{
$I->sendPost('/api/access/token',
[
'account' => 'ju',
'password' => '123456'
]);
$I->seeResponseCodeIsClientError();
$I->seeResponseCodeIs(HttpCode::BAD_REQUEST);
$I->seeResponseMatchesJsonType(['status' => 'integer']);
$I->seeResponseContainsJson(['status' => 1,'error'=>'用户状态已失效']);
}
public function faultUserInfoLoginTest(ApiTester $I){
$I->sendPost('/api/access/token',
[
'account' => 'ju111',
'password' => '123456'
]);
$I->seeResponseCodeIsClientError();
$I->seeResponseCodeIs(HttpCode::BAD_REQUEST);
$I->seeResponseMatchesJsonType(['status' => 'integer']);
$I->seeResponseContainsJson(['status' => 1,'error'=>'用户不存在或密码有误']);
}
}
Run!
php vendor/bin/codecept run
--help
--steps #在输出中显示步骤