• ExcelBDD Python指南


    在Python里面支持BDD

    Excel BDD Tool Specification By ExcelBDD Method

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

    The Essential of this approach is obtaining multiple sets of test data, so when combined with Excel's Sheet, the key parameters are:

    1. ExcelFileName, required, which excel file is used.
    2. SheetName, optional, which Sheet the requirement writer writes in, if not specified, 1st sheet is chosen. An Excel file supports multiple Sheets, so an Excel is sufficient to support a wide range, such as Epic, Release, or a module.
    3. HeaderMatcher, filter the header row by this matcher, if matched, this set will be collected in.
    4. HeaderUnmatcher, filter the header row by this matcher, if matched, this set will be excluded.

    Once the header row and parameter name column are determined by 'Parameter Name' grid automatically, the data area is determined, such as the green area in the table above. The gray area of the table above is the story step description, which is the general requirements step.

    Install ExcelBDD Python Edition

    pip install excelbdd

    API

    behavior.get_example_list

    get_example_list(excelFile, sheetName = None, headerMatcher = None, headerUnmatcher = None)

    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.get_example_table

    get_example_table(excelFile,sheetName = None,headerRow = 1,startColumn = 'A')

    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 column A in sheet

    Simple example code

    The Famouse FizzBuzz kata is described in excelbdd format, as below.

    1. import pytest
    2. from excelbdd.behavior import get_example_list
    3. import FizzBuzz
    4. excelBDDFile = "path of excel file"
    5. @pytest.mark.parametrize("HeaderName, Number1, Output1, Number2, Output2, Number3, Output3, Number4, Output4",
    6. get_example_list(excelBDDFile,"FizzBuzz"))
    7. def test_FizzBuzz(HeaderName, Number1, Output1, Number2, Output2, Number3, Output3, Number4, Output4):
    8. assert FizzBuzz.handle(Number1) == Output1
    9. assert FizzBuzz.handle(Number2) == Output2
    10. assert FizzBuzz.handle(Number3) == Output3
    11. assert FizzBuzz.handle(Number4) == Output4

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

     

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

    1. @pytest.mark.parametrize("HeaderName, ParamName1, ParamName1Expected, ParamName1TestResult, \
    2. ParamName2, ParamName2Expected, ParamName2TestResult, ParamName3, \
    3. ParamName3Expected, ParamName3TestResult, ParamName4, ParamName4Expected, \
    4. ParamName4TestResult",
    5. get_example_list(bddFile1, "SBTSheet1","Scenario"))
    6. def test_excelbdd_sbt(HeaderName, ParamName1, ParamName1Expected, ParamName1TestResult,
    7. ParamName2, ParamName2Expected, ParamName2TestResult, ParamName3,
    8. ParamName3Expected, ParamName3TestResult, ParamName4, ParamName4Expected,
    9. ParamName4TestResult):
    10. print(HeaderName, ParamName1, ParamName1Expected, ParamName1TestResult,
    11. ParamName2, ParamName2Expected, ParamName2TestResult, ParamName3,
    12. ParamName3Expected, ParamName3TestResult, ParamName4, ParamName4Expected,
    13. ParamName4TestResult)
    14. # add test data are loaded into the above parameters, add test code below

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

    Input vs Expected 

     

    The demo code is below

    1. @pytest.mark.parametrize("HeaderName, ParamName1, ParamName1Expected, \
    2. ParamName2, ParamName2Expected, ParamName3, \
    3. ParamName3Expected, ParamName4, ParamName4Expected"
    4. get_example_list(bddFile1, "SBTSheet1","Scenario"))
    5. def test_excelbdd_sbt(HeaderName, ParamName1, ParamName1Expected,
    6. ParamName2, ParamName2Expected, ParamName3,
    7. ParamName3Expected, ParamName4, ParamName4Expected):
    8. print(HeaderName, ParamName1, ParamName1Expected,
    9. ParamName2, ParamName2Expected, ParamName3,
    10. ParamName3Expected, ParamName4, ParamName4Expected)
    11. # add test data are loaded into the above parameters, add test code below

    Get Table

    The test data are organized in normal table, as below.

     the below code show how to fetch the test data into testcase

    1. from excelbdd.behavior import get_example_table
    2. @pytest.mark.parametrize("Header01, Header02, Header03, Header04, Header05, Header06, Header07, Header08",
    3. get_example_table(tableFile, "DataTable4"))
    4. def test_get_example_tableB(Header01, Header02, Header03, Header04, Header05, Header06, Header07, Header08):
    5. print(Header01, Header02, Header03, Header04, Header05, Header06, Header07, Header08)
    6. # add test data are loaded into the above parameters, add test code below

    ExcelBDD Python指南线上版维护在ExcelBDD Python Guideline

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

     

  • 相关阅读:
    【Docker 内核详解】namespace 资源隔离(五):User namespaces
    《痞子衡嵌入式半月刊》 第 53 期
    C++位操作
    时间空间复杂度分析--冒泡排序算法
    Linux权限理解以及shell理解
    恒凯USB数据采集卡在国产麒麟操作系统下的应用(四)QT环境设置及数据采集实验
    Windows与网络基础-23-传输介质-双绞线
    java反射,注解,动态代理学习(黑马程序员)
    ppt复现CVPR顶会流程图
    如何使用Tensorflow的VGG16预置模型
  • 原文地址:https://blog.csdn.net/zhangmike/article/details/133815589