一个比较惭愧的事情是做开发这么久了,却很少写测试(单元、集成测试等)。每当项目要求写单元测试的时候,我的内心基本是抵制的,基本上程序都自测通过以后都能正常上线,bug 数量也很低 :) 。

因为最近为了规范项目,保证项目质量,需要写一些测试,看到了 codeception 这个全栈的测试框架非常欣喜,强大、易用。由于 composer 的介入,也让安装变得各种容易(网络环境就不说了)。

关于 codeception 的功能就不多介绍了,相关的功能看这篇文章 里面唯独对 API testing 说的比较简单,我这里简单的说下 API testing 的使用。(假设 codeception 已经安装好)

简易的项目目录

1
2
www
|--tests

1
2
3
4
cd www
codecept bootstrap
codecept generate:suite api
codecept generate:cept api User

经过上面的操作以后,在 tests 目录下已经有了很多文件了,其中会有一些 api 相关的文件。

1
2
3
4
5
6
7
8
9
cat api.suite.yml 
# 配置文件

class_name: ApiTester
modules:
enabled: [ApiHelper, PhpBrowser]
config:
PhpBrowser:
url: http://httpbin.org

此时的目录信息,还有一些省略的文件

1
2
3
4
5
www
|--tests
|----api
|------_bootstrap.php
|------UserCept.php

编写 UserCept.php 来进行简单的测试

1
2
3
4
5
6
7
8
cat UserCept.php

<?php
$I = new ApiTester($scenario);
$I->wantTo('see my ip');
$I->amOnPage('/ip');
$I->seeResponseCodeIs(200);
$I->see('origin');

运行和查看测试结果

1
2
3
cd www
codecept build
codecept run api -v

运行之后会看到一些结果信息。相关的 codeception 的内置函数等请浏览相关的文档,一个简单的 api 测试编写完了。

eof;