PHP 开发入门自动化测试历程(一)
刻意练习,坚持
作为一名开发人员,保证代码质量是基本的素养。良好的代码规范是不错的方法,也是一直在坚持的。对代码的自动化测试,则是另一种重要的形式。这里不纠结于单元测试、接口测试、功能测试这些概念,核心是实现 自动化测试 的目标。
在这段称得上 “入门” 的阶段之前,也断断续续尝试了几次自动化测试的学习,但都是不了了之。究其原因,主要有两点:一是没有动手去刻意练习,只是粗略的看了文档;二是纠结要如何开始对自己代码的测试。
现在的 Web
开发,大都是在比较成熟的框架基础上进行。个人主要在 Laravel
框架上开发,就以该框架为例记录自己 “入门” 的经历。( Laravel
版本为 5.8
,其它版本可能有所区别,具体查看官方文档)
认识 PHPUnit#
自动化测试 就是要通过编写测试代码来对应用程序代码进行测试,为了编写更加规范、更加简介的测试代码,就产生了测试框架。
PHPUnit
是面向 PHP
开发者的成熟测试框架,进行自动化测试大概率都要使用该工具,对其有一定的认识是必要的。官网地址:www.phpunit.cn/
看着官方文档上那么多章节的内容,总是容易被劝退。但刚开始并不需要掌握那么多的,核心三点:安装、编写、执行。
安装 PHPUnit#
有两种方式可以使用 PHPUnit
:
- 一是独立下载
PHPUnit.phar
文件,然后编写批处理文件**
echo @php “%~dp0phpunit.phar” %* > phpunit.cmd**
,再加入环境变量,即可全局使用phpunit
命令。 - 二是在应用程序中通过
composer
安装phpunit/phpunit
包,然后在应用程序根目录下就可以使用./vendor/bin/phpunit
命令。
具体使用哪种方式,也是跟着使用场景走,两者都用也可行。
- 如果只是个人简单尝试,并没有一个应用程序,当然选择第一种方式就可以了。
- 如果是开发过程中的接入测试,第二种方式显然更优,并且很多框架都继承了测试框架,使用会更加优雅。
编写测试#
工具准备好了,接下来就是去编写测试代码,这需要遵循测试框架基本惯例和步骤:
- 以类为单位,开始编写测试代码。测试类遵循
Test
结尾的驼峰命名 - 测试类继承测试框架提供的抽象类
PHPUnit\Framework\TestCase
(在框架中可能是其它类) - 类方法就是一个个测试用例,这里编写具体的测试逻辑
- 类方法支持以
test
开头的驼峰命名 或者 添加@test
注解的蛇形命名两种形式
一个简单的测试示例:
<?php
use PHPUnit\Framework\TestCase;
// 测试类命名以 Test 结尾,继承 TestCase
class ExapmleTest extends TestCase
{
// 测试用例1,以 test 开头的驼峰命名
public function testTrue()
{
$this->assertTrue(true);
}
/** @test 测试用例2,使用 @test 注解的蛇形命名*/
public function is_false()
{
$this->assertFalse(false);
}
}
执行测试#
当我们编写好一个测试类后,就可以使用 phpunit
执行相应测试了,只需要简单的在测试文件所在目录下,在命令行中执行 phpunit ExampleTest.php
即可,输出通常如下:
PHPUnit 6.5.3 by Sebastian Bergmann and contributors.
.. 2 / 2 (100%)
Time: 483 ms, Memory: 10.00MB OK (2 test, 2 assertion)
注意上面第三行的 .
字符,对于每个测试的运行, PHPUnit
都会输出一个字符来表示其执行结果,常见的三种字符如下:.
表示测试通过, F
表示测试中断言失败, E
表示测试中出现了错误,其它字符参考文档。
上面是执行一整个文件的全部测试,有时候只需要执行单个测试,也是可以的:
phpunit --filter testTrue ./ExapmleTest.php
更多的命令行选项,在使用过程中,根据需求查询文档获知。
参考#
后续历程#
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: