phpt文件内容解析

phpt测试文件说明

phpt文件用于PHP的自动化测试,这是PHP用自己来测试自己的测试数据用例文件。 测试脚本通过执行PHP源码根目录下的run-tests.php,读取phpt文件执行测试。

phpt文件包含 TEST,FILE,EXPECT 等多个段落的文件。在各个段落中,TEST、FILE、EXPECT是基本的段落, 每个测试脚本都必须至少包括这三个段落。其中:

  • TEST段可以用来填写测试用例的名字。
  • FILE段是一个 PHP 脚本实现的测试用例。
  • EXPECT段则是测试用例的期待值。

在这三个基本段落之外,还有多个段落,如作为用例输入的GET、POST、COOKIE等,此类字段最终会赋值给\(env变量。 比如,cookie存放在\)env['HTTP_COOKIE'],$env变量将作为用例中脚本的执行环境。一些主要段落说明如下表所示:

PHP测试脚本中的段落说明

:段落名 填充内容 备注
TEST 测试脚本语句 必填段落
FILE 测试脚本语句 必填段落。用PHP语言书写的脚本语句。其执行的结果将与 EXPECT* 段的期待结果做对比。
ARGS FILE 段的输入参数 选填段落
SKIPIF 跳过这个测试的条件 选填段落
POST 传入测试脚本的 POST 变量 选填段落。如果使用POST段,建议配合使用SKIPIF段
GET 传入测试脚本的 GET 变量 选填段落。如果使用GET段,建议配合使用SKIPIF段。
POST_RAW 传入测试脚本的POST内容的原生值 选填段落。比如在做文件上传测试时就需要使用此字段来模拟HTTP的POST请求。
COOKIE 传入测试脚本的COOKIE的值 选填段落。最常见的是将PHPSESSID的值传入。
INI 应用于测试脚本的 ini 设置 选填段落。例如 foo=bar 。其值可通过函数 ini_get(string name_entry) 获得。
ENV 应用于测试脚本的环境设置 选填段落。例如做gzip测试,则需要设置环境HTTP_ACCEPT_ENCODING=gzip。
EXPECT 测试脚本的预期结果 相当于测试文件的结果 必填段落
EXPECTF 测试脚本的预期结果 选填段落。可用函数 sscanf() 中的格式表达预期结果 EXPECT 段的变体
EXPECTREGEX 测试脚本的正则预期结果 选填段落。以正则的方式包含多个预期结果,是预期结果EXPECT段的一种变体。
EXPECTHEADERS 测试脚本的预期头部内容 选填段落.测试脚本期待HTTP头部返回,是预期结果EXPECT段的另一种格式。验证过程中会按头部的字段一一比对测试,比如zlib扩展中,如果开启zlib.output_compression, 则在EXPECTHEADERS中包含Content-Encoding: gzip作为预期结果。

phpt文件只是用例文件,它还需要一个控制器来调用这些文件,以实现整个测试过程。 PHP的测试控制器文件是源码根目录下的run-tests.php文件。此文件的作用是根据传入的参数,分析用例相关数据,执行测试过程。 其大概过程如下:

  1. 分析输入的命令行,根据参数配置相关参数,初始化各种信息。
  2. 分析用例输入参数,获取需要执行的用例文件列表。PHP支持指定单文件用例执行,支持多文件用例执行, 支持 .phpt多用例执行,支持 .phpt简化版本多用例执行(相当于.phpt)。
  3. 遍历用例文件列表,执行每一个用例。对于每个用例,PHP会具体解析测试脚本中各个段落的含义, 清除所有上次测试的记录与设置将准备此次的测试环境,并把各种中间文件和日志文件准备好, 然后用环境变量 TEST_PHP_EXECUTABLE 指定的 PHP 可执行对象运行实际的测试语句。 最后将运行后的结果和测试脚本中的预期结果(EXPECT*段)进行比较,如果比较结果一致,则测试通过;如果不一致,则测试失败, 最后将结果信息一一记录到用户设置的日志文件中。
  4. 生成测试结果。

这仅仅是执行的过程,除此之外,还有若干准备和清理工作,如,对上次测试遗留下的环境的清理, 本次测试所必须的环境变量的读取与设置,对测试参数的解析,测试脚本名的解析,各种输出文件的准备等等

以测试脚本/tests/basic/001.phpt为例:

[php]
--TEST--
Trivial "Hello World" test
--FILE--
<?php echo "Hello World"?>
--EXPECT--
Hello World

这个用例脚本只包含必填的三项。测试控制器会执行--FILE--下面的PHP文件, 如果最终的输出是--EXPECT--所期望的结果则表示这个测试通过,如果不一致,则测试不通过, 最终这个用例的测试结果会汇总会所有的测试结果集中。

原文链接:https://www.cnblogs.com/ivanlee717/p/16845865.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:phpt文件内容解析 - Python技术站

(0)
上一篇 2023年4月19日
下一篇 2023年4月19日

相关文章

  • PHP输入输出流学习笔记

    下面我为您详细讲解“PHP输入输出流学习笔记”的完整攻略。 什么是PHP输入输出流 PHP输入输出流是指输入和输出的数据流,在PHP中可以使用标准输入输出(stdin和stdout)和标准错误(stderr)来进行输入输出。 标准输入输出 输出 在PHP中,可以使用echo和print函数来向标准输出流(stdout)输出数据。例如: echo "…

    PHP 2023年5月26日
    00
  • 微信朋友圈评论怎么发语音? 朋友圈发送语音评论的技巧

    微信朋友圈评论怎么发语音? 要在微信朋友圈中发语音评论,我们需要先按照以下步骤将语音转化并上传至微信服务器: 进入微信聊天页面,找到要添加语音的聊天对象。 在聊天页面下方的输入框中,长按语音按钮,开始录制语音。 录制完成后,停止录音。此时,按住该语音长按,选择“发送给朋友”,然后选择朋友圈。 在弹出窗口中编辑语音描述和选择发送范围。 完成编辑后,点击“发送”…

    PHP 2023年5月30日
    00
  • php生成用户密码的两种方式

    下面是PHP生成用户密码的两种方式的具体攻略: 方式一:使用PHP内置函数password_hash() 使用PHP内置函数password_hash()生成密码是一种比较常用的方式。password_hash()函数能够帮助我们生成安全的哈希密码,同时也自动进行加盐操作,避免了简单的hash被彩虹表破解。 代码示例 <?php $password =…

    PHP 2023年5月26日
    00
  • PHP实现的分页类定义与用法示例

    PHP实现的分页类是一种常用的技术,可以用于解决大量数据分页显示的需求。下面是一份详细的“PHP实现的分页类定义与用法示例”的攻略。 分页类的定义 首先,我们需要定义一个名为 Pager 的分页类。该类主要具备以下特点: 可以接收数据库查询的统计总数、当前页、每页显示条数等参数。 可以根据总数、当前页和每页显示条数计算出总页数。 可以生成分页导航条。 以下是…

    PHP 2023年5月27日
    00
  • PHP基础用法讲解及phpinfo();演示

    下面是关于“PHP基础用法讲解及phpinfo();演示”的完整攻略。 1. PHP基础用法讲解 在PHP中,我们可以使用echo函数来输出一些信息,也可以使用var_dump函数来输出变量的值及其类型,还可以使用if、for等控制结构来编写逻辑。 以下是一个简单的示例,演示如何使用这些基础的语法进行开发: <?php // 使用echo输出一句话 e…

    PHP 2023年5月24日
    00
  • PHP按符号截取字符串的指定部分的实现方法

    下面是“PHP按符号截取字符串的指定部分的实现方法”的完整攻略。 一、substr()函数 PHP中的substr()函数可以按照指定长度截取字符串,包括从开头截取和从指定位置截取两种方式。如果要按照符号截取字符串的指定部分,我们可以先使用PHP中的strpos()函数来获取指定符号在字符串中的位置,然后再使用substr()函数进行截取。 下面是一个简单的…

    PHP 2023年5月26日
    00
  • [PHP]实用函数5

    以下是关于“[PHP]实用函数5”的详细攻略: 简介 “[PHP]实用函数5”是一篇介绍 PHP 实用函数的文章,包含了一些常见且实用的函数,如时间处理函数、字符串处理函数等。 时间处理函数 date函数 date函数用于格式化日期和时间,常见的格式有: Y:4位数的年份,如2022 m:2位数的月份,如05 d:2位数的日期,如28 H:24小时制的小时数…

    PHP 2023年5月26日
    00
  • PHP实现HTML页面静态化的方法

    实现HTML页面静态化的方法有很多种,其中PHP实现HTML页面静态化是一种常见的方式。下面是PHP实现HTML页面静态化的完整攻略: 步骤一:创建一个PHP页面 首先,我们需要创建一个PHP页面,用于生成静态HTML文件。我们可以通过以下的代码,来创建一个PHP页面: <?php // 设置静态HTML文件保存路径 $html_path = ‘/va…

    PHP 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部