【问题标题】:In behave, how do you run a scenario only?在行为上,你如何只运行一个场景?
【发布时间】:2014-11-20 01:31:04
【问题描述】:

我有一个“行为”功能,它有很多测试。

我只需要运行一个特定的场景来满足开发需求。

我该怎么做?

(最好在命令行上)

【问题讨论】:

    标签: python bdd python-behave


    【解决方案1】:

    要只运行一个场景,您可以使用 -n 和场景名称:

    $ behave -n 'clicking the button "foo" should bar the baz'
    

    我在上面使用单引号将场景名称保留为 -none 参数。否则,shell 会将场景名称的每个单词作为单独的参数传递。

    【讨论】:

    • 单引号在 Windows 命令解释器中似乎不起作用,在这种情况下似乎需要双引号。
    【解决方案2】:

    如果您想对该功能运行单个测试,请使用-n--name 标志,这似乎需要Scenario: 之后的文本

    behave -n 'This is a scenario name'
    

    您可以使用-i--include 标志运行功能文件,然后使用功能文件的名称。

    behave -i file_name.feature
    

    或:

    behave --include file_name
    

    您也可以使用--exclude 标志排除:

    behave -e file_name
    

    有关更多信息,请查看command line arguments 的文档。他们的附录部分隐藏了很多有用的信息。


    注意:由于issue,在我写这篇文章时,它不适用于 Python 3.6 和 Behave 1.2.5。 (更新:1.2.6 已经发布并修复了此问题,但如果您使用的是 python 3.4,则 pip 将无法使用该版本,因此您可以使用 pip3 install git+https://github.com/behave/behave#1.2.6rc 解决此问题。

    您似乎也应该能够在 Feature: 之后为 -i 标志传递文本,但目前这不起作用。如果它再次起作用,有人提醒我更新。我还鼓励人们查看 wip 标志,它允许您将 @wip 添加到测试中,然后 -wip 不仅会运行测试,还允许打印/记录语句进行调试。

    【讨论】:

      【解决方案3】:

      标签提供了几个选项...

      1) 标记慢的,然后通过调用反向来避免,例如

      behave -t '~@slow_tag_name'  
      

      2) 但是,为了获得最大的灵活性,我个人建议使用唯一 ID 标记每个场景。例如我使用@YYYY_MM_DD_HHmm_Initials 标记方案,因为它足够独特并且可追溯性有用/有趣。然后你总是可以简单地使用标签调用并让它运行场景,.e.g

      behave @2015_01_03_0936_jh 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多