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/excelbdd

or

php 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 复制代码
<?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

php 复制代码
    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.

php 复制代码
    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 复制代码
<?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 Homepagehttps://dev.azure.com/simplopen/ExcelBDD

相关推荐
Bruce12318 小时前
web专题之php代审(二)
php
侃侃_天下18 小时前
最终的信号类
开发语言·c++·算法
BingoGo18 小时前
PHP-FPM 深度调优指南 告别 502 错误,让你的 PHP 应用飞起来
后端·php
echoarts19 小时前
Rayon Rust中的数据并行库入门教程
开发语言·其他·算法·rust
Aomnitrix19 小时前
知识管理新范式——cpolar+Wiki.js打造企业级分布式知识库
开发语言·javascript·分布式
每天回答3个问题19 小时前
UE5C++编译遇到MSB3073
开发语言·c++·ue5
伍哥的传说20 小时前
Vite Plugin PWA – 零配置构建现代渐进式Web应用
开发语言·前端·javascript·web app·pwa·service worker·workbox
小莞尔20 小时前
【51单片机】【protues仿真】 基于51单片机八路抢答器系统
c语言·开发语言·单片机·嵌入式硬件·51单片机
我是菜鸟0713号20 小时前
Qt 中 OPC UA 通讯实战
开发语言·qt
JCBP_20 小时前
QT(4)
开发语言·汇编·c++·qt·算法