Files
phalapi-pro/public/wiki/testcase.md
2022-03-21 11:16:38 +08:00

3.8 KiB
Raw Permalink Blame History

PHP接口自动化测试单独购买

通过白盒测试可以对PHP编写的API接口进行自动化测试。这部分需要单独购买。

目前配套接口大师的单元测试共有148个测试用例, 347个断言总执行时间约3秒100%测试通过率。

自动化测试的好处

学会和使用自动化测试有非常明显的好处,例如:

  • 1、节省测试成本基本可以不需要人工进行接口测试做到自动化测试和验证
  • 2、提高API接口质量通过360度全方位的测试和断言时刻测试让代码调试更简单让Bug重现更轻松
  • 3、加强发布质量每次发布前执行一次单元测试做最后一公里全面的接口回归测试
  • 4、改善代码规范容易测试的代码更优雅、更灵活、更有活力
  • 5、可以和CICD进行集成构建持续交付的工作流

安装PHPUnit

PHP单元测试使用的是主流的PHPUnit单元测试使用前请先安装PHPUnit。

安装PHPUNit http://phpunit.cn/manual/5.7/zh_cn/installation.html

配置单元测试数据库

复制./tests/config/dbs.php.sample一份到./tests/config/dbs.php并修改。为单元测试单独创建一个专业的数据库并调整里的数据库对应的配置。

    'servers' => array(
        'db_master' => array(                   //服务器标记
            'host'      => '127.0.0.1',               //数据库域名
            'name'      => 'phalapi_pro_test',               //数据库名字
            'user'      => 'root',               //数据库用户名
            'password'  => '123456',           //数据库密码
            'port'      => '3306',               //数据库端口
            'charset'   => 'utf8mb4',            //数据库字符集
            'pdo_attr_string'   => false,           // 数据库查询结果统一使用字符串true是false否
            'driver_options' => array(              // PDO初始化时的连接选项配置
                // 若需要更多配置请参考官方文档https://www.php.net/manual/zh/pdo.constants.php
            ),
        ),
    ),

一键执行单元测试

进入到tests目录执行命令

$ phpunit

就可以进行一键测试,执行全部的单元测试用例,并且重建数据库。

单元测试的运行结果:

发布时的单元测试

如果需要和发布系统集成或者在测试时不需要查看输入SQL语句、不需要打印日志可以执行命令

$ cd tests
$ phpunit -c ./phpunit_release.xml

执行结果类似:

$ phpunit -c ./phpunit_release.xml
正在重建数据库……
PHPUnit 5.7.25 by Sebastian Bergmann and contributors.

...............................................................  63 / 148 ( 42%)
............................................................... 126 / 148 ( 85%)
......................                                          148 / 148 (100%)

Time: 12.56 seconds, Memory: 18.00MB

OK (148 tests, 347 assertions)

结果截图:

测试时不重建数据库

如果不需要每次测试都重新创建数据库,可以执行命令:

$ cd tests
$ phpunit -c ./phpunit_not_sql.xml

此时,不会删除原来的测试数据库表和数据,但要注意测试用例是否可以重复执行。对于查询类的测试是适用的。

自动生成测试用例

参考PhalApi开源框架官方文档phalapi-buildtest命令可以使用脚本自动给API接口和PHP类生成对应的单元测试骨架代码减少人工重复编写代码的时间和成本。