Select 行 table 在 Python

Select rows from behave table in Python

我正在使用 behave 框架在 Python 中开发测试。目前,我有一个场景大纲和下面的示例。我希望能够随时 select 这些示例之一,并 运行 该示例的测试功能。我会怎么做呢?现在,每当我从命令行调用 behave 时,它​​都会针对 Examples behave table 我在场景大纲下的每个示例条目执行场景。

编辑:我已附上屏幕截图以使事情更清楚。

这个例子来自 behave 的文档。如果我们查看消费电子产品 table,我们会看到 2 行,场景大纲将 运行(因此它会 运行 两次)。假设我想测试其中一个示例,而我们有 20 个这样的示例(即 20 行)。我如何才能只选择其中一个,而不是 运行 进行我的行为测试并不得不等待场景大纲完成所有案例(如果我想要的示例是 [=24= 上的最后一个条目) ] 例如)。

我现在能想到的唯一选择是为这样的行为指定确切的行:behave blenders.feature:12

例如 SpecFlow 可以让您为示例块指定一个标签,但不幸的是 python 不会 AFAIK。

我这样做的方法是让多个 'Examples' 表具有不同的名称。然后在behave调用的时候传入--name参数

使用 --name 参数,但指定所需示例块的编号以及其中所需示例的编号。两个数字都从 1 开始计数。

所以对于这个场景大纲:

Scenario Outline: Blenders
   Given I put <thing> in a blender,
    when I switch the blender on
    then it should transform into <other thing>

 Examples: Amphibians
   | thing         | other thing |
   | Red Tree Frog | mush        |

 Examples: Consumer Electronics
   | thing         | other thing |
   | iPhone        | toxic waste |
   | Galaxy Nexus  | toxic waste |

仅将 Galaxy Nexus 放入搅拌机:

behave --name 'Blenders -- @2.2' blenders.feature

我通常从 运行 整个功能开始,然后通过复制粘贴特定的 --name '...' 缩小范围,因为 behave 总是以这种确切的格式回应每个遇到的场景。