phpstorm配置phpunit单元测试及PHPunit断言函数
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断言函数相关推荐
- phpstorm配置phpunit,进行php单元测试
phpstorm配置phpunit,进行php接口单元测试 1.安装php5.6,phpunit5.1,curl mac 自带的默认是php5.5,需要升级,打开终端,运行: curl -s http ...
- phpstorm配置phpunit组件
phpunit是一种常用的测试组件 phpstorm中如何配置phpunit呢 首先需要下载phpunit 两种方式下载,一种是通过composer,前提需要安装composer 一种是直接下载php ...
- PHPUnit单元测试
PHPUnit单元测试 一.概述 1. 什么是单元测试? [百度百科]单元测试是对软件中的最小可测单元进行检查和验证. 是开发者编写的一小段代码,用于检验被测代码的一个很小的.很明确的功能是否正确. ...
- PHP单元测试框架PHPUnit的使用方法
以前在学习IOS开发时有专门写过Objective-C的单元测试的文章,IOS开发学习之单元测试,今天再总结下怎么在PHP中使用单元测试. 一.前言 在这篇文章中,我们使用 composer 的依赖包 ...
- PHP单元测试框架PHPUnit的使用
以前在学习IOS开发时有专门写过Objective-C的单元测试的文章,IOS开发学习之单元测试,今天再总结下怎么在PHP中使用单元测试. 一.前言 在这篇文章中,我们使用 composer 的依赖包 ...
- php单元测试工具入门,PHPUnit 单元测试安装与使用入门教程
本文实例讲述了PHPUnit 单元测试安装与使用.分享给大家供大家参考,具体如下: 一.官网下载对应 PHP 版本的代码库 二.安装 PHPUnit 官网提供了两种方法安装 1. PHP Archiv ...
- php断言什么意思,一起学习PHP中断言函数的使用
一起学习PHP中断言函数的使用 原来一直以为断言相关的函数是 PHPUnit 这些单元测试组件提供的,在阅读手册后才发现,这个 assert() 断言函数是 PHP 本身就自带的一个函数.也就是说,我 ...
- [PHPUnit]自动生成PHPUnit测试骨架脚本-提供您的开发效率【2015升级版】
2019独角兽企业重金招聘Python工程师标准>>> 场景 在编写PHPUnit单元测试代码时,其实很多都是对各个类的各个外部调用的函数进行测试验证,检测代码覆盖率,验证预期效果. ...
- PHPUnit manual note | PHPUnit手册笔记
PHPUnit http://phpunit.de/manual/current/en/index.html http://phpunit.de/manual/3.4/en/index.html ht ...
- php自动生成phpunit,[PHPUnit]自动生成PHPUnit测试骨架脚本
场景 在编写PHPUnit单元测试代码时,其实很多都是对各个类的各个外部调用的函数进行测试验证,检测代码覆盖率,验证预期效果.为避免增加开发量,可以使用PHPUnit提供的phpunit-skelge ...
最新文章
- Android-----application的学习
- Oracle 数据库Patch概念性小常识 PSU,CPU,bundle patch
- 安装win7系统不能开机启动服务器,win7系统开机启动项不能加载的原因分析及解决...
- 判断ip地址的合法性python_使用Python判断IP地址合法性的方法实例
- 计算机原子指令,计算机体系结构——多线程(核)访存“上锁”——原子指令...
- perform update operations on columns of type JSONB
- 考研数学一之高数上册学习计划
- Matlab二维图导入ansys,(原创教程)利用Matlab对ANSYS数据进行后处理.pdf
- ubuntu系统下VirtualBox安装windows虚拟机
- 善领dsa2020最新车机ce版_内功实力再精进 试驾上汽大通V80 PLUS城市版
- Simphony学习2 安全相关(密码和角色)
- 干货——IT项目管理之软件测试
- IPV4组播地址解析以及IPV4地址详解
- 企业员工管理系统 一:项目介绍
- 连接公司办公 快速连接公司协同办公的20款必备软件
- AMD处理器与INTEL的区别
- 好用到爆!IDEA 版 Postman 面世了,功能真心强大
- 中国大学慕课第7周测验
- 软件测试-测试面试题
- 关于初始化数据库时报错及解决办法(常见故障整理)
热门文章
- hutool SpringUtil.getBean() NullPointerException
- 什么是latch以及如何导致latch争用
- Verilog 避免 Latch
- 4484: [Jsoi2015]最小表示
- 结对编程——自动生成数学试卷的系统(javaswing,mysql)by 陈松刘宇航
- 【单片机毕业设计】【mcuclub-jj-037】基于单片机的电热毯的设计
- 用delete带where条件删除特定行部分列(属性)的数据,可能活在梦里
- java推送微信消息换行_微信公众号开发:回复文本消息换行的三种方式
- curl: (51) Unable to communicate securely with peer: requested domain name does not match the server
- dot全称_dot是什么格式的文件?dot文件如何打开?