在行为方面,您如何仅运行场景?

Mar*_*pez 24 python bdd python-behave

我有一个"行为"功能,它有很多测试.

我只需要针对开发需求运行特定方案.

我该怎么做?

(最好在命令行上)

Lou*_*uis 26

要仅运行单个方案,您可以使用方案-n的名称:

$ behave -n 'clicking the button "foo" should bar the baz'
Run Code Online (Sandbox Code Playgroud)

我正在使用上面的单引号将方案的名称保留为一个参数-n.否则,shell将把方案名称的每个单词作为单独的参数传递.

  • 单引号似乎在Windows命令解释器中不起作用,在这种情况下似乎需要双引号. (2认同)

Cyn*_*nic 20

如果要对该功能运行单个测试,请使用-n或者--name希望之后需要文本的标志Scenario:

behave -n 'This is a scenario name'
Run Code Online (Sandbox Code Playgroud)

您可以使用-i--include标记然后使用要素文件的名称来运行要素文件.

behave -i file_name.feature
Run Code Online (Sandbox Code Playgroud)

要么:

behave --include file_name
Run Code Online (Sandbox Code Playgroud)

你也可以用--exclude旗子排除:

behave -e file_name
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请查看命令行参数的文档.附录部分中隐藏了许多有用的信息.


注意:在我写这篇文章的时候,由于这个问题,它不适用于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不仅会运行测试,还会允许print/logging语句进行调试.


shu*_*ngb 4

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

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

behave -t '~@slow_tag_name'  
Run Code Online (Sandbox Code Playgroud)

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

behave @2015_01_03_0936_jh 
Run Code Online (Sandbox Code Playgroud)