Python 是否可能有一个带有空值的场景大纲表?

Python 是否可能有一个带有空值的场景大纲表?,python,bdd,gherkin,Python,Bdd,Gherkin,场景大纲:诸如此类 当我在输入字段中输入和时 那么一切都很好 示例: |a | b | |1 | 2 | || 3| 上述场景在BBD Behave中引发以下错误 测试未定义 请定义测试 我不知道我怎样才能扭转这一局面。 有什么建议吗 据我所知,你做不到。但是您可以使用空字符串或占位符值(例如“N/a”),您可以在步骤定义中查找这些值。如果您可以在给定的/when/then步骤中不显式地提及参数,那么确实可以使用空表单元格(如您的示例中,不使用“”或其他内容) 在您的示例中,这意味着您不能像这样

场景大纲:诸如此类 当我在输入字段中输入和时 那么一切都很好

示例:
|a | b |
|1 | 2 |
|| 3|

上述场景在BBD Behave中引发以下错误 测试未定义 请定义测试

我不知道我怎样才能扭转这一局面。
有什么建议吗

据我所知,你做不到。但是您可以使用空字符串或占位符值(例如“N/a”),您可以在步骤定义中查找这些值。

如果您可以在给定的/when/then步骤中不显式地提及参数,那么确实可以使用空表单元格(如您的示例中,不使用“”或其他内容)

在您的示例中,这意味着您不能像这样编写步骤定义

Given two parameters <a> and <b>
...

@given('two parameters {a} and {b}
def step(context, a, b):
  # test something with a and b
给定两个参数

context.active\u outline
返回可通过以下方式访问的对象:

  • context.active\u outline.headers
    返回表格标题列表,无论当前迭代的行是什么(问题示例中的a和b)
  • context.active\u outline.cells
    返回当前迭代行的单元格值列表(1、2和“”(空字符串,如果不是…
,则可使用
进行测试),在问题示例中为3)
  • 基于索引的访问,如
    context.active\u outline[0]
    返回第一列的单元格值(无论标题如何),等等
  • 基于命名的访问,如
    context.active\u outline['a']
    返回带有标题的列的单元格值,无论其索引如何

  • 作为
    context.active\u outline.headers
    context.active\u outline.cells
    返回列表,还可以为标题、zip中的单元格(context.active\u outline.headers、context.active\u outline.cells)执行
    之类的有用操作
    迭代标题值对等。

    使用
    中描述的自定义类型转换https://pypi.org/project/parse/

    import parse
    
    from behave import given, register_type
    
    
    @parse.with_pattern(r'.*')
    def parse_nullable_string(text):
        return text
    
    
    register_type(NullableString=parse_nullable_string)
    
    @given('params "{a:NullableString}" and "{b:NullableString}"'
    def set_params(context, a, b):
      # a or b will be empty if they are blank in the Examples
      context.a = a
      context.b = b
    
    
    现在功能文件可以如下所示

    Given params "<a>" and "<b>"
    # Rest of the steps
    Examples:
     | a | b |
     | 1 | 2 |
     |   | 3 |
    
    给定参数“”和“”
    #其余步骤
    示例:
    |a | b|
    | 1 | 2 |
    |   | 3 |
    
    Given params "<a>" and "<b>"
    # Rest of the steps
    Examples:
     | a | b |
     | 1 | 2 |
     |   | 3 |