phpunit单元测试 浏览器测试_如何愉快的在PhpStorm中进行PHPUnit单元测试和Xdebug断点调试?...

43b130b7b5258fc850a48b58b808ab84.png
本作品系 原创, 采用 《署名-非商业性使用-禁止演绎 4.0 国际》 许可协议

dd10a95bc1359234423f5f0ec2c1f2b3.png

博文内容

前言

  • 如果你想做个接口测试,但并不想公开内部接口
  • 如果你只是想对自己封装的某块代码做个小测试
  • 如果你想要编写代码边调试,又不想操作 Postman 或前端的功能来调用 API
  • 本文暂时仅介绍在 LaravelComoposer Library 项目中如何配置 PHPUnit

参考文档

如何愉快的在PhpStorm中进行PHPUnit单元测试和Xdebug断点调试? https:// segmentfault.com/a/1190 000016323574 如何愉快的在PhpStorm中进行PHPUnit单元测试和Xdebug断点调试? https:// blog.csdn.net/RobotYang 123/article/details/82533080 —— PHPUnit 手册: http://www. phpunit.cn/manual/curre nt/zh_cn/index.html phpunit assert断言分类整理 : https://www. cnblogs.com/ningskyer/a rticles/5744760.html

安装

Xdebug

  • 请参考以下文章的 PHP 安装 Xdebug 章节 > 如何愉快的在PhpStorm中进行Xdebug断点调试:https://segmentfault.com/a/1190000014942730?_ea=4357076 > 如何愉快的在PhpStorm中进行Xdebug断点调试:https://blog.csdn.net/RobotYang123/article/details/80370030

配置

配置 PhpStorm 的 PHP CLi

  • 选择 File -> Setting

98c221e07d7401484b183987b2e65364.png
  • 搜索 CLI ,左侧选择 PHP,点击 + 新增一个 PHP 解释器。
    • Windows
      • 配置 php 执行程序
      • 点击那个 同步的小图标,如果看到 successfully 就说明配置有效
      • 指定 Xdebug 模块

6cc698088deb92f1e2cd9f24a7e342a4.png
    • Ubuntu

1d43517e591ef6b451bd45bf855e290b.png

配置 PHPUnit

  • 选择 File -> Setting,搜索 test ,左侧选择 Test Framework,点击 + 新增一个 PHPUnit Local

7ac0a00cb2a83597af5fded4f93b37d7.png
    • Composer Library 项目
      • 选择第一项:使用 composer autoloader 导入配置
      • 选择你项目下的 vendor/autoload.php
      • 点击那个 同步的小图标,如果看到 successfully 就说明配置有效

3fd260033f378c2e6636235fef0a0770.png
    • Laravel 项目
      • 选择第一项:使用 composer autoloader 导入配置
      • 选择你项目下的 bootstrap/autoload.php(或者选项目下的 vendor/autoload.php
      • 点击那个 同步的小图标,如果看到 successfully 就说明配置有效

3cef1f1cbfefe5b5fe5e10398a57750c.png

配置 phpunit.xml

  • 在你的项目根目录下新建 phpunit.xml 文件(但奇怪的是我在 PhpStorm 删除这个文件,也可以执行单元测试,猜测可能是 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>
        <directory suffix="Test.php">./tests</directory>
    </testsuite>

    <!--filter过滤依赖文件的位置-->
    <filter>
        <whitelist processUncoveredFilesFromWhitelist="true">
            <directory suffix=".php">./src</directory>
        </whitelist>
    </filter>
</phpunit>
  • 当然这个 phpunit.xml 只是基本配置,还有其他高级配置请自行百度

新增测试例

  • 在你的项目根目录下新建 tests 目录
  • tests 目录下新建 phpunit 测试类,以 Test.php 为后缀

6ebf0a1eef617605818b820beffafa08.png

8e475aeaf2f1771c02c1321c0298f8f0.png
  • 编写测试例方法,以 test 开头
<?php
/**
 * Created by PhpStorm.
 * User: robot
 * Date: 2018/9/8
 * Time: 23:54
 */

namespace HonorSdkTests;

use PHPUnitFrameworkTestCase;

class HelloTest extends TestCase
{
    public function testHello()
    {
        $expect = 'hello world'; //期待结果
        $result = $this->requestApi(); //请求api 或 调用 service 后返回的结果
        $this->assertEquals($expect, $result); //使用断言方法 比较结果值
    }

    //假装请求数据
    private function requestApi()
    {
        echo $date_1 = date('Y-m-d H:i:s');
        echo "<br>";;
        echo $date_2 = date('Y-m-d H:i:s');
        echo "<br>";;
        echo $date_3 = date('Y-m-d H:i:s');
        echo "<br>";;
        echo $date_4 = date('Y-m-d H:i:s');
        echo "<br>";;
        echo $date_5 = date('Y-m-d H:i:s');
        echo "<br>";;
        $j = 0;
        for ($i = 0; $i < 10; $i++) {
            $j = $i * 2;
            $i = $i + 2;
            echo $i;
            echo "<br>";
            echo $j;
            echo "<br>";
        }
        return 'hello world';
    }
}
  • 打上断点,然后在要测试的方法名上右键,选择 Debug 这个方法

9f27fa3286c44ae9f8b4b53f1c59f0e5.png
  • 第一次可能会弹出让你选择测试范围的配置界面,这里我们只测试指定方法,所以选择了 Method

bc86954110ece4b247dceb26b5d37d19.png
  • 测试结果
    • 测试例执行 Xdebug 的流程

9d5f5b78624eef131f55a1ff5c43e4ec.png
    • 测试例执行成功的返回信息

36af85f6ae67afb36bacb4b1b60837a3.png

调试快捷键

  • F7 通过当前行,进入下一行,如果该行是方法,则进入方法体
  • F8 通过当前行,进入下一行,如果该行是方法,也直接进入下一行,不进入方法体
  • F9 通过整个流程,全部顺序执行,除非遇到下一个断点

要点总结

  • 配置 PHP CLIphp.exexdebug.dll
  • 配置 PHPUnitautoload.php
  • 配置 phpunit.xml (可选)
  • 新增 测试例(测试类 和 测试方法)

关于我的

个人简介

属性 | 属性值 :---: | :--- 昵称 | 大绵羊、大绵羊rbt、rbtyang、RobotYang 格言 | 博观约取,厚积薄发;刻意练习、日益精进 后端 | Go、PHP、Python 前端 | Vue、Angular、Uniapp、公众号、小程序 数据 | MySQL、Redis/Memcached、MongoDB 博客 | CSDN 思否 掘金 简书 知乎 开源中国 订阅号(RobotYang123)

期望赞赏

万水千山总是情,赞不赞赏都可行 ( ̄▽ ̄)~■干杯□~( ̄▽ ̄)

278b233db83a75e0279d26f1619498e0.png
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PhalApi 2.x 是一个轻量级的 PHP 开发框架,它提供了一些便捷的工具和功能,方便我们进行开发。在进行开发过程,我们需要编写一些单元测试浏览器测试,以确保代码的正确性和稳定性。 1. 单元测试 PhalApi 2.x 的单元测试使用 PHPUnit 进行测试PHPUnit 是一个流行的 PHP 单元测试框架,它提供了一些便捷的工具和功能,方便我们进行单元测试。 编写单元测试的过程如下: 1)创建测试类 在 tests 目录下创建一个测试类,继承 \PHPUnit\Framework\TestCase 类,并在类编写测试方法。例如: ```php use PHPUnit\Framework\TestCase; class DemoTest extends TestCase { public function testDemo() { // 测试代码 } } ``` 2)运行测试 在命令行执行以下命令即可运行测试: ```bash ./vendor/bin/phpunit tests/DemoTest.php ``` 2. 浏览器测试 PhalApi 2.x 的浏览器测试使用 Selenium 进行测试,Selenium 是一个流行的浏览器自动化测试工具,它提供了一些便捷的工具和功能,方便我们进行浏览器测试。 编写浏览器测试的过程如下: 1)安装 Selenium 在命令行执行以下命令安装 Selenium: ```bash composer require --dev phpunit/phpunit-selenium ``` 2)编写测试类 在 tests 目录下创建一个测试类,继承 \PHPUnit_Extensions_Selenium2TestCase 类,并在类编写测试方法。例如: ```php use PHPUnit_Extensions_Selenium2TestCase; class DemoBrowserTest extends PHPUnit_Extensions_Selenium2TestCase { protected function setUp() { $this->setBrowser('firefox'); $this->setBrowserUrl('http://localhost/'); } public function testDemo() { $this->url('/'); $this->assertEquals('Demo', $this->title()); } } ``` 3)运行测试 在命令行执行以下命令即可运行测试: ```bash ./vendor/bin/phpunit tests/DemoBrowserTest.php ``` 以上就是 PhalApi 2.x 的单元测试浏览器测试的简单介绍。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值