36

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

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

我该怎么做?

(最好在命令行上)

4

3 回答 3

35

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

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

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

于 2015-08-21T10:32:58.293 回答
30

如果您想为该功能运行单个测试,请使用-nor--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

有关更多信息,请查看命令行参数的文档。他们的附录部分隐藏了很多有用的信息。


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

于 2017-07-13T00:34:08.327 回答
4

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

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

behave -t '~@slow_tag_name'  

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

behave @2015_01_03_0936_jh 
于 2015-01-04T11:05:37.530 回答