PHPunit安装及配置

项目中引入PHPunit

composer require phpunit/phpunit

安装PHPunit脚本

下载跟当前PHP版本兼容的phpunit.phar

phpstorm里配置好脚本路径
phpstorm中Languages & Frameworks > PHP > Test Frameworks

配置phpunit.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--bootstrap指定启动测试时, 先加载vendor/autoload.php-->
<phpunit backupGlobals="false"backupStaticAttributes="false"bootstrap="vendor/autoload.php"colors="true"convertErrorsToExceptions="true"convertNoticesToExceptions="true"convertWarningsToExceptions="true"processIsolation="false"stopOnFailure="false"><!--testsuite指定测试文件的目录--><testsuite name = "aaa"><directory suffix="Test.php">tests</directory></testsuite>
</phpunit>执行单元测试

xml 解释bootstrap="./vendor/autoload.php"在测试之前加载的的PHP 文件,一般可以做一个初始化工作<testsuite name="actionsuitetest"><directory suffix=".php">action</directory><file>Order.php</file>
</testsuite>测试套件,如果想测试页面,action,model 可以多加几个测试套件name: 套件名称directory :套件测试的目录,目录下一般放测试文件的用例suffix :测试文件后缀,如果不填写,则默认后缀为*Test.php,即phpunit 默认会执行*Test.php  的文件action:测试目录名file:可以单独设置测试文件exclude:排除不需要测试的文件<filter> 元素及其子元素用于配置代码覆盖率报告所使用的白名单。
blacklist 黑名单(不需要统计覆盖率的文件),whitelist 白名单(统计覆盖率的测试文件) 当黑名单与白名单文件重复时,白名单起作用<logging> 元素及其 <log> 子元素用于配置测试执行期间的日志记录。

单元测试编写

测试类继承PHPUnit\Framework\TestCase
类名以Test为后缀,可以在phpunit.xml中设置
测试方法必须为public,以test为前缀

tests目录下新建一个类BaseTest.php
如下示例,断言1+1 和2是否想等

<?php
namespace tests;
class BaseTest extends \PHPUnit\Framework\TestCase
{public function testA(){$this->assertEquals(1+1, 2);// assertEquals()用来对实际值与预期值的匹配做出断言}
}

执行单元测试

单个方法执行

方法名上右键 run testAAA即可,执行结果显示在最底部

单个文件或类执行

类名上右键执行

全部执行

phpunit.xml 上右键

接口单元测试方法

socket接口

以websocket为列,介绍下编写测试方法来测试接口是否符合预期

BaseTest作为基类,里面提供网络请求方法request连接websocket接口

<?php
namespace tests;
class BaseTest extends \PHPUnit\Framework\TestCase
{private  $host = 'tcp://172.17.0.3:7273';public function request($param){$client = stream_socket_client($this->host);if(!$client)exit("can not connect");fwrite($client, json_encode($param,JSON_UNESCAPED_SLASHES)."\n");// 读取推送结果$msg = fread($client, 8192);
//        $msg = '';
//        while (!feof($client)) {//            $msg .= fread($client, 8192);
//        }$response = json_decode($msg,true);return $response;}

testGood.php 用于商品类的测试,该类继承BaseTest类,用来测试商品添加等操作的正确用例能否通过

this−>assertEquals(this->assertEquals(this−>assertEquals(res[‘code’], 0);意思是接口返回的code为0,则断言通过

<?php
namespace tests;
require_once __DIR__ . '/BaseTest.php';
class GoodTest extends BaseTest
{public function testList(){$param = ['api'=> 'm-good-list','app'=> 'iphone','ver'=> '1.0','data'=> [],];$res = $this->request($param);var_dump(json_encode($res));$this->assertEquals($res['code'], 0);}public function testAdd(){$param = ['api'=> 'm-good-add','app'=> 'iphone','ver'=> '1.0','data'=> ['image' => ['aa.com','bb.com',],'title' => 'xxxx','brief' => 'xxxx','market_price' => 100,'price' => 100,'score' => 22,'stock' => 22,'content' => 'vdfgbdfhb',],];$res = $this->request($param);var_dump(json_encode($res));$this->assertEquals($res['code'], 0);}

http接口

http接口可以使用curl进行网络请求来测试

数据有多组时可以用注解@dataProvider指定数据源

比如

    /*** @dataProvider addProvider*/public function testAppAdd($data){$param = ['api'=> 'index/Comment/add','app'=> 'iphone','ver'=> '1.0','data'=> $data,];$res = $this->request($param);var_dump(json_encode($res));$this->assertEquals($res['code'], 0);}public function addProvider(){return array([['lecture_id' => 1,'to_comment_id' => 0,'content' => 'hufleiwaufyhlieurhuihuifweahuifihuehuifehui',]],[['lecture_id' => 1,'to_comment_id' => 1,'content' => 'hahah2',]],[['lecture_id' => 1,'to_comment_id' => 2,'content' => 'hahah3',]],);}

phpunit常用断言函数

布尔类型
方法名 含义 参数 返回值
assertTrue 断言为真
assertFalse 断言为假
NULL类型
方法名 含义 参数 返回值
assertNull 断言为NULL
assertNotNull 断言非NULL
数字类型
方法名 含义 参数 返回值
assertEquals 断言等于
assertNotEquals 断言大于
assertGreaterThan 断言不等于
assertGreaterThanOrEqual 断言大于等于
assertLessThan 断言小于
assertLessThanOrEqual 断言小于等于
字符类型
方法名 含义 参数 返回值
assertEquals 断言等于
assertNotEquals 断言不等于
assertContains 断言包含
assertNotContains 断言不包含
assertContainsOnly 断言小于
assertLessThanOrEqual 断言只包含
assertNotContainsOnly 断言不只包含
数组类型
方法名 含义 参数 返回值
assertEquals 断言等于
assertNotEquals 断言不等于
assertArrayHasKey 断言有键
assertArrayNotHasKey 断言没有键
assertContains 断言包含
assertNotContains 断言不包含
assertContainsOnly 断言只包含
assertNotContainsOnly 断言不只包含
对象类型
方法名 含义 参数 返回值
assertAttributeContains 断言属性包含
assertAttributeContainsOnly 断言属性只包含
assertAttributeEquals 断言属性等于
assertAttributeGreaterThan 断言属性大于
assertAttributeGreaterThanOrEqual 断言属性大于等于
assertAttributeLessThan 断言属性小于
assertAttributeLessThanOrEqual 断言属性小于等于
assertAttributeNotContains 断言不包含
assertAttributeNotContainsOnly 断言属性不只包含
assertAttributeNotEquals 断言属性不等于
assertAttributeNotSame 断言属性不相同
assertAttributeSame 断言属性相同
assertSame 断言类型和值都相同
assertNotSame 断言类型或值不相同
assertObjectHasAttribute 断言对象有某属性
assertObjectNotHasAttribute 断言对象没有某属性
class类型
方法名 含义 参数 返回值
assertClassHasAttribute 断言类有某属性
assertClassHasStaticAttribute 断言类有某静态属性
assertClassNotHasAttribute 断言类没有某属性
assertClassNotHasStaticAttribute 断言类没有某静态属性
文件相关
方法名 含义 参数 返回值
assertFileEquals 断言文件内容等于
assertFileExists 断言文件存在
assertFileNotEquals 断言文件内容不等于
assertFileNotExists 断言文件不存在
XML相关
方法名 含义 参数 返回值
assertXmlFileEqualsXmlFile 断言XML文件内容相等
assertXmlFileNotEqualsXmlFile 断言XML文件内容不相等
assertXmlStringEqualsXmlFile 断言XML字符串等于XML文件内容
assertXmlStringEqualsXmlString 断言XML字符串相等
assertXmlStringNotEqualsXmlFile 断言XML字符串不等于XML文件内容
assertXmlStringNotEqualsXmlString 断言XML字符串不相等

phpstorm配置phpunit单元测试及PHPunit断言函数相关推荐

  1. phpstorm配置phpunit,进行php单元测试

    phpstorm配置phpunit,进行php接口单元测试 1.安装php5.6,phpunit5.1,curl mac 自带的默认是php5.5,需要升级,打开终端,运行: curl -s http ...

  2. phpstorm配置phpunit组件

    phpunit是一种常用的测试组件 phpstorm中如何配置phpunit呢 首先需要下载phpunit 两种方式下载,一种是通过composer,前提需要安装composer 一种是直接下载php ...

  3. PHPUnit单元测试

    PHPUnit单元测试 一.概述 1. 什么是单元测试? [百度百科]单元测试是对软件中的最小可测单元进行检查和验证. 是开发者编写的一小段代码,用于检验被测代码的一个很小的.很明确的功能是否正确. ...

  4. PHP单元测试框架PHPUnit的使用方法

    以前在学习IOS开发时有专门写过Objective-C的单元测试的文章,IOS开发学习之单元测试,今天再总结下怎么在PHP中使用单元测试. 一.前言 在这篇文章中,我们使用 composer 的依赖包 ...

  5. PHP单元测试框架PHPUnit的使用

    以前在学习IOS开发时有专门写过Objective-C的单元测试的文章,IOS开发学习之单元测试,今天再总结下怎么在PHP中使用单元测试. 一.前言 在这篇文章中,我们使用 composer 的依赖包 ...

  6. php单元测试工具入门,PHPUnit 单元测试安装与使用入门教程

    本文实例讲述了PHPUnit 单元测试安装与使用.分享给大家供大家参考,具体如下: 一.官网下载对应 PHP 版本的代码库 二.安装 PHPUnit 官网提供了两种方法安装 1. PHP Archiv ...

  7. php断言什么意思,一起学习PHP中断言函数的使用

    一起学习PHP中断言函数的使用 原来一直以为断言相关的函数是 PHPUnit 这些单元测试组件提供的,在阅读手册后才发现,这个 assert() 断言函数是 PHP 本身就自带的一个函数.也就是说,我 ...

  8. [PHPUnit]自动生成PHPUnit测试骨架脚本-提供您的开发效率【2015升级版】

    2019独角兽企业重金招聘Python工程师标准>>> 场景 在编写PHPUnit单元测试代码时,其实很多都是对各个类的各个外部调用的函数进行测试验证,检测代码覆盖率,验证预期效果. ...

  9. PHPUnit manual note | PHPUnit手册笔记

    PHPUnit http://phpunit.de/manual/current/en/index.html http://phpunit.de/manual/3.4/en/index.html ht ...

  10. php自动生成phpunit,[PHPUnit]自动生成PHPUnit测试骨架脚本

    场景 在编写PHPUnit单元测试代码时,其实很多都是对各个类的各个外部调用的函数进行测试验证,检测代码覆盖率,验证预期效果.为避免增加开发量,可以使用PHPUnit提供的phpunit-skelge ...

最新文章

  1. Android-----application的学习
  2. Oracle 数据库Patch概念性小常识 PSU,CPU,bundle patch
  3. 安装win7系统不能开机启动服务器,win7系统开机启动项不能加载的原因分析及解决...
  4. 判断ip地址的合法性python_使用Python判断IP地址合法性的方法实例
  5. 计算机原子指令,计算机体系结构——多线程(核)访存“上锁”——原子指令...
  6. perform update operations on columns of type JSONB
  7. 考研数学一之高数上册学习计划
  8. Matlab二维图导入ansys,(原创教程)利用Matlab对ANSYS数据进行后处理.pdf
  9. ubuntu系统下VirtualBox安装windows虚拟机
  10. 善领dsa2020最新车机ce版_内功实力再精进 试驾上汽大通V80 PLUS城市版
  11. Simphony学习2 安全相关(密码和角色)
  12. 干货——IT项目管理之软件测试
  13. IPV4组播地址解析以及IPV4地址详解
  14. 企业员工管理系统 一:项目介绍
  15. 连接公司办公 快速连接公司协同办公的20款必备软件
  16. AMD处理器与INTEL的区别
  17. 好用到爆!IDEA 版 Postman 面世了,功能真心强大
  18. 中国大学慕课第7周测验
  19. 软件测试-测试面试题
  20. 关于初始化数据库时报错及解决办法(常见故障整理)

热门文章

  1. hutool SpringUtil.getBean() NullPointerException
  2. 什么是latch以及如何导致latch争用
  3. Verilog 避免 Latch
  4. 4484: [Jsoi2015]最小表示
  5. 结对编程——自动生成数学试卷的系统(javaswing,mysql)by 陈松刘宇航
  6. 【单片机毕业设计】【mcuclub-jj-037】基于单片机的电热毯的设计
  7. 用delete带where条件删除特定行部分列(属性)的数据,可能活在梦里
  8. java推送微信消息换行_微信公众号开发:回复文本消息换行的三种方式
  9. curl: (51) Unable to communicate securely with peer: requested domain name does not match the server
  10. dot全称_dot是什么格式的文件?dot文件如何打开?