当前位置: 首页 > news >正文

ExcelBDD PHP Guideline

在PHP里面支持利用Excel的BDD,也支持利用Excel进行参数化测试

ExcelBDD

Use Excel file as BDD feature file, get example data from Excel files, support automation tests.

Features

The main features provided by this library are:

  • Read test data according to BDD from excel files.
  • Read test data according to Table from excel files.

Install

Install the library using composer Opens in new window or tab:

composer require excelbdd/excelbddorphp composer.phar require excelbdd/excelbdd

Excel BDD Tool Specification By ExcelBDD Method

This tool is to get BDD test data from an excel file, its requirement specification is below

Examples

Read Simple BDD data

The above is the simple BDD format for most usage.

<?php
use PHPUnit\Framework\TestCase;
use ExcelBDD\Behavior;final class BehaviorTest extends TestCase
{public static function BehaviorgetExampleListProvider(): array{$excelFile = "./BDDExcel/ExcelBDD.xlsx";$sheetName = "Sheet1";return Behavior::getExampleList($excelFile, $sheetName, "", "wrong");}/** @dataProvider BehaviorgetExampleListProvider */public function testBehaviorgetExampleList($ParamName1, $ParamName2, $ParamName3, $ParamName4){echo $ParamName1, $ParamName2, $ParamName3, $ParamName4, "\n";$this->assertSame(strpos($ParamName1, "V1"), 0);$this->assertSame(strpos($ParamName2, "V2"), 0);}
}

Input vs Expect + Test Result Format - SBT - Specification By Testcase


testcase example is below, which uses headerMatcher to filter the data

    public static function BDDSBTDataProvider(): array{$excelFile = "../Java/src/test/resources/excelbdd/ExcelBDD.xlsx";$sheetName = "SBTSheet1";return Behavior::getExampleList($excelFile, $sheetName, "Scenario");}#[DataProvider('BDDSBTDataProvider')]public function testBDDSBTExampleList($ParamName1, $ParamName1Expected, $ParamName1TestResult, $ParamName2, $ParamName2Expected, $ParamName2TestResult, $ParamName3, $ParamName3Expected, $ParamName3TestResult, $ParamName4, $ParamName4Expected, $ParamName4TestResult){echo "===testBDDSBTExampleList===", "\n";echo $ParamName1, $ParamName1Expected, $ParamName1TestResult, $ParamName2, $ParamName2Expected, $ParamName2TestResult, $ParamName3, $ParamName3Expected, $ParamName3TestResult, $ParamName4, $ParamName4Expected, $ParamName4TestResult, "\n";$this->assertSame(strpos($ParamName1, "V1"), 0);$this->assertSame(strpos($ParamName2, "V2"), 0);$this->assertSame($ParamName1TestResult,"pass");}

Input vs Expected

ExcelBDD can detect 3 parameter-header patterns automatically, the last one is below.

    public static function BDDExpectedDataProvider(): array{$excelFile = "../Java/src/test/resources/excelbdd/ExcelBDD.xlsx";$sheetName = "Expected1";return Behavior::getExampleList($excelFile, $sheetName);}#[DataProvider('BDDExpectedDataProvider')]public function testBDDExpectedExampleList($ParamName1, $ParamName1Expected, $ParamName2, $ParamName2Expected, $ParamName3, $ParamName3Expected, $ParamName4, $ParamName4Expected){echo "===testBDDSBTExampleList===", "\n";echo $ParamName1, $ParamName1Expected, $ParamName2, $ParamName2Expected, $ParamName3, $ParamName3Expected, $ParamName4, $ParamName4Expected, "\n";$this->assertSame(strpos($ParamName1, "V1"), 0);$this->assertSame(strpos($ParamName2, "V2"), 0);}

Read table data

<?php
use PHPUnit\Framework\TestCase;
use ExcelBDD\Behavior;
use PHPUnit\Framework\Attributes\DataProvider;final class BDDTest extends TestCase
{public static function TableDataProvider(): array{$excelFile = "../Java/src/test/resources/excelbdd/DataTable.xlsx";$sheetName = "DataTable2";return Behavior::getExampleTable($excelFile, $sheetName);}#[DataProvider('TableDataProvider')]public function testTableData($Header01, $Header02, $Header03, $Header04, $Header05, $Header06, $Header07, $Header08){echo $Header01, $Header02, $Header03, $Header04, $Header05, $Header06, $Header07, $Header08, "\n";$this->assertStringContainsString("Value1", $Header01);}
}

API

Behavior::getExampleList

public static function getExampleList(string $excelFile, string $sheetName = null, string $headerMatcher = null, string $headerUnmatcher = null): array

  1. $excelFile: excel file path and name, relative or absolute
  2. $sheetName: sheet name, optional, default is the first sheet in excel file
  3. $HeaderMatcher: filter the header row by this matcher, if matched, this set will be collected in. optional, default is to select all.
  4. $HeaderUnmatcher: filter the header row by this matcher, if matched, this set will be excluded. optional, default is to exclude none.

Behavior::getExampleTable

public static function getExampleTable($excelFile, $sheetName = null, $headerRow = 1, $startColumn = '`'): array

  1. $excelFile: excel file path and name, relative or absolute
  2. $sheetName: sheet name, optional, default is the first sheet in excel file
  3. $headerRow: the number of header row, optional, default is 1
  4. $startColumn: the char of first data area, optional, default is auto detect

ExcelBDD PHP Guideline 线上版维护在 ExcelBDD PHP Guideline on Azure

ExcelBDD开源项目位于 ExcelBDD Homepage​icon-default.png?t=N7T8https://dev.azure.com/simplopen/ExcelBDD

相关文章:

ExcelBDD PHP Guideline

在PHP里面支持利用Excel的BDD&#xff0c;也支持利用Excel进行参数化测试 ExcelBDD Use Excel file as BDD feature file, get example data from Excel files, support automation tests. Features The main features provided by this library are: Read test data acco…...

C++静态链接库的生成以及使用

目录 一.前言二.生成静态链接库三.使用静态链接库四.其他 一.前言 这篇文章简单讨论一下VS如何生成和使用C静态链接库&#xff0c;示例使用VS2022环境。 二.生成静态链接库 先创建C项目-静态库 然后将默认生成的.h和.cpp文件清理干净&#xff0c;当然你也可以选择保留。 然…...

【2024系统架构设计】 系统架构设计师第二版-未来信息综合技术

目录 一 信息物理系统 二 人工智能 三 机器人技术 四 边缘计算 五 数字孪生体...

JavaFX修改软件图标

JavaFX默认使用jdk的程序图片显示&#xff0c;可以通过以下代码进行修改设置 stage.getIcons().add(new Image("static/icon.png")); static/icon.png改为自己图片路径 这里可以使用相对路径和绝对路径&#xff0c;看自己需求设置 例&#xff1a; import javafx.a…...

Linux ps -ef|grep去除 grep --color=auto信息

linux 监控 进程判断是否启动可通过该指令实现 ps -ef|grep java指令结果为 # -v 参数有过滤作用 ps -ef|grep java |grep -v grep...

jQuery的学习(一篇文章齐全)

目录 Day29 jQuery 1、jQuery介绍 2、jQuery的选择器 2.1、直接查找 2.2、导航查找 3、jQuery的绑定事件 案例1&#xff1a;绑定取消事件 案例2&#xff1a;模拟事件触发 4、jQuery的操作标签 tab切换案例jQuery版本&#xff1a; 案例1&#xff1a; 案例2&#xff…...

注塑行业各类业务流程图(系统化)

...

Android Studio 安装及使用

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…...

计算机网络的OSI七层模型

目录 1、OSI七层模型是什么 1.1 物理层&#xff08;Physical Layer&#xff09; 1.2 数据链路层&#xff08;Data Link Layer&#xff09; 1.3 网络层&#xff08;Network Layer&#xff09; 1.4 传输层&#xff08;Transport Layer&#xff09; 1.5 会话层&#xff08;S…...

如何一次性解压多个文件

第一步&#xff1a;多选压缩包 第二步&#xff1a;右键解压即可 一句话&#xff0c;单个怎么解压&#xff0c;多个就怎么解压&#xff0c;只不过先选中 参考&#xff1a;如何一次性解压多个文件...

类和对象学习笔记

类和对象 类的定义this指针类的6个默认成员函数构造函数析构函数拷贝构造函数赋值运算符重载赋值运算符重载运算符重载const成员 取地址操作符重载const取地址操作符重载 初始化列表explicit关键字static成员匿名对象友元内部类拷贝对象时编译器的优化 类的定义 c类的定义形式…...

Linux程序之可变参数选项那些事!

一、linux应用程序如何接收参数&#xff1f; 1. argc、argv Linux应用程序执行时&#xff0c;我们往往通过命令行带入参数给程序&#xff0c;比如 ls /dev/ -l 其中参数 /dev/ 、-l都是作为参数传递给命令 ls 应用程序又是如何接收这些参数的&#xff1f; 通常应用程序都…...

【1day】泛微e-office OA系统user_page接口未授权访问漏洞学习

注:该文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。 目录 一、漏洞描述 二、影响版本 三、资产测绘 四、漏洞复现...

Midjourney绘画提示词Prompt参考教程

Midjourney绘画提示词Prompt参考教程&#xff1a;无需魔法使用。 一、AI工具 SparkAi&#xff1a; SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常…...

Altium Designer学习笔记6

原理图库的制作&#xff0c;SMA元件的制作&#xff1a; 图形不是很重要&#xff0c;重要的是管脚的功能。 Design Item ID和Designator两个值是要注意的。 进行Place放置&#xff0c;切换到原理图工作区&#xff0c;测试下功能。 AD9851元件库制作&#xff1a; 不需要再新建原…...

【问题解决】Maven密码加密

普通的maven部署方式是把maven私服的账号密码以明文的方式配置在settings.xml文件中 <server><id>deploymentRepo</id><username>xxx</username><password>123</password></server> 这种方式的配置很容易被别人看到从而泄漏…...

vue3基于vite打包

大的js和css打包成&#xff1a;gzip npm install vite-plugin-compression 在vite.config.ts中配置&#xff1a; import viteCompression from vite-plugin-compressionplugins:[viteCompression({verbose:true,//控制台输出压缩结果disable:false,//开启还是禁用threshold:…...

前端使用JWT时无法获取Authorization请求头

是因为后端没有解决跨域问题&#xff1a; 补充下面的代码即可 response.setHeader("Access-Control-Expose-Headers", "Authorization");...

postman定义公共函数这样写,测试组长直呼牛逼!!!

postman定义公共函数 在postman中&#xff0c;如下面的代码&#xff1a; 1、返回元素是否与预期值一致 var assertEqual(name,actual,expected)>{tests[${name}&#xff1a;实际结果&#xff1a; ${actual} &#xff0c; 期望结果&#xff1a;${expected}]actualexpected…...

单元测试实战(六)其它

为鼓励单元测试&#xff0c;特分门别类示例各种组件的测试代码并进行解说&#xff0c;供开发人员参考。 本文中的测试均基于JUnit5。 单元测试实战&#xff08;一&#xff09;Controller 的测试 单元测试实战&#xff08;二&#xff09;Service 的测试 单元测试实战&am…...

【马聊】策划谈论

一、系统策划马聊 面试问题来源&#xff1a;https://www.bilibili.com/video/BV1M3HvzEESW/?spm_id_from333.1387.top_right_bar_window_history.content.click&vd_source5cb8afa8194500fcbe7ab879fc8f177e 1、系统设计理念 1.1设计目的、设计思路很重要 1.2界面交互逻辑清…...

NBTExplorer终极指南:如何快速掌握Minecraft数据可视化编辑工具

NBTExplorer终极指南&#xff1a;如何快速掌握Minecraft数据可视化编辑工具 【免费下载链接】NBTExplorer A graphical NBT editor for all Minecraft NBT data sources 项目地址: https://gitcode.com/gh_mirrors/nb/NBTExplorer NBTExplorer是一款强大的开源图形化NBT…...

物联网项目踩坑实录:RS485温湿度传感器数据上传,为什么我的TCP服务器收不到数据?

物联网项目实战&#xff1a;RS485温湿度传感器数据上传的七大常见故障排查指南 当你满怀期待地将RS485温湿度传感器通过4G DTU连接到远程TCP服务器&#xff0c;却发现数据链路像被施了魔法般毫无反应——这种挫败感每个物联网开发者都深有体会。本文不会重复那些基础教程&#…...

AI-Rules:为AI应用构建声明式规则引擎,实现智能与规则的解耦

1. 项目概述&#xff1a;AI-Rules&#xff0c;一个为AI应用量身定制的规则引擎在AI应用开发领域&#xff0c;我们常常面临一个核心矛盾&#xff1a;一方面&#xff0c;我们希望模型能够灵活、智能地处理复杂多变的输入&#xff1b;另一方面&#xff0c;业务场景又要求输出必须严…...

B站缓存视频合并工具:零基础3步将碎片视频变完整MP4

B站缓存视频合并工具&#xff1a;零基础3步将碎片视频变完整MP4 【免费下载链接】BilibiliCacheVideoMerge &#x1f525;&#x1f525;Android上将bilibili缓存视频合并导出为mp4&#xff0c;支持安卓5.0 ~ 13&#xff0c;视频挂载弹幕播放(Android consolidates and exports …...

为 OpenClaw 配置 Taotoken 作为其大模型供应商

为 OpenClaw 配置 Taotoken 作为其大模型供应商 1. 准备工作 在开始配置之前&#xff0c;请确保您已经完成以下准备工作。首先&#xff0c;您需要拥有一个有效的 Taotoken API Key&#xff0c;可以在 Taotoken 控制台中创建。其次&#xff0c;您需要确定要使用的模型 ID&…...

暗黑破坏神2重制版自动化刷宝终极指南:Botty像素级智能助手全解析

暗黑破坏神2重制版自动化刷宝终极指南&#xff1a;Botty像素级智能助手全解析 【免费下载链接】botty D2R Pixel Bot 项目地址: https://gitcode.com/gh_mirrors/bo/botty 想要在《暗黑破坏神2重制版》中解放双手&#xff0c;实现高效自动刷宝吗&#xff1f;Botty作为一…...

深度学习如何将MRI扫描时间缩短4倍?揭秘FastMRI的革命性突破

深度学习如何将MRI扫描时间缩短4倍&#xff1f;揭秘FastMRI的革命性突破 【免费下载链接】fastMRI A large-scale dataset of both raw MRI measurements and clinical MRI images. 项目地址: https://gitcode.com/gh_mirrors/fa/fastMRI 想象一下&#xff0c;你正躺在M…...

2026年苹果系统将推“Extensions”功能,AI服务选择不再局限于ChatGPT!

苹果2026年系统更新&#xff1a;引入“Extensions”功能据MacRumors报道&#xff0c;苹果计划在2026年秋季发布的iOS 27、iPadOS 27及macOS 27系统中&#xff0c;引入名为“Extensions”的新功能。该功能允许用户为Apple Intelligence的各项功能自主选择第三方AI服务&#xff0…...

APP加固防Hook效果哪家强?实测RASP与代码虚拟化技术差距

“我们的支付SDK被Hook了&#xff0c;用户下单金额被篡改&#xff0c;一晚上损失了几十万。”这是某电商平台安全负责人亲口告诉我的惨痛经历。在外挂与黑产眼里&#xff0c;Hook技术是攻击移动应用的“万能钥匙”&#xff0c;通过篡改函数返回值、修改内存数据&#xff0c;可以…...