【问题标题】:Select rows from behave table in Python从 Python 中的行为表中选择行
【发布时间】:2019-04-23 12:15:01
【问题描述】:

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

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

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

【问题讨论】:

  • 你能举个例子吗?我不确定您所说的“示例”是什么意思?
  • @idjaw 我为你附上了一张照片和描述

标签: python bdd python-behave


【解决方案1】:

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

【讨论】:

    【解决方案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 总是以这种确切的格式回显每个遇到的场景。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2018-10-09
        • 1970-01-01
        • 2022-07-27
        • 2019-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-24
        • 2018-08-27
        相关资源
        最近更新 更多