3

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

编辑:我附上了一个截图,让事情更清楚。

在此处输入图像描述

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

4

3 回答 3

2

我这样做的方法是拥有多个具有不同名称的“示例”表。然后在调用行为时传递--name参数。

于 2016-04-14T02:46:57.690 回答
2

使用--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总是以这种确切的格式回显每个遇到的场景。

于 2019-02-20T14:52:30.587 回答
0

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

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

于 2016-04-12T09:13:23.113 回答