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

相关推荐
开开心心就好21 分钟前
多份文档怎么批量打印?支持多种格式
java·服务器·开发语言·pdf·ocr·散列表·启发式算法
Want59523 分钟前
Python炫酷烟花①
开发语言·python
天远API1 小时前
零信任架构实战:基于天远公安二要素政务版构建自动化不动产交易与契税核算实名核实网关
人工智能·架构·自动化·php
星夜离尘561 小时前
MATLAB 线性去趋势为何损伤低频正弦:联合最小二乘估计幅相与漂移
开发语言·matlab
程序员清风2 小时前
双指针与滑动窗口:高效处理连续区间
开发语言·算法
开开心心就好2 小时前
文件被占用删不掉?解锁工具强制删除
java·运维·服务器·开发语言·前端·pdf·ocr
云和数据.ChenGuang2 小时前
python大小整数范围解析
java·开发语言·python
fensnote3 小时前
西门子 S7 PLC 内部寄存器读写 Demo(C 语言)
c语言·开发语言
WeiXin_DZbishe3 小时前
基于springboot装修风格选择系统的设计与开发-计算机毕设【课程设计】77964
java·vue.js·spring boot·后端·python·php·课程设计
benchmark_cc3 小时前
量化项目启动时,应该先设计数据接口还是先编写策略?从系统架构角度做出正确选择
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash