我有一个“行为”功能,上面有很多测试。
我只需要运行一个特定的场景来满足开发需求。
我该怎么做?
(最好在命令行上)
要只运行一个场景,您可以使用场景-n
的名称:
$ behave -n 'clicking the button "foo" should bar the baz'
我在上面使用单引号将场景名称保留为-n
. 否则,shell 会将场景名称的每个单词作为单独的参数传递。
如果您想为该功能运行单个测试,请使用-n
or--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
不仅会运行测试,而且还允许打印/记录语句以进行调试。
标签提供了几个选项...
1)标记慢的,然后通过调用反向来避免,例如
behave -t '~@slow_tag_name'
2)但是,为了获得最大的灵活性,我个人建议使用唯一 ID 标记每个场景。例如,我使用@YYYY_MM_DD_HHmm_Initials
标签方案,因为它足够独特并且可追溯性有用/有趣。然后你总是可以简单地使用标签调用并让它运行场景,.eg
behave @2015_01_03_0936_jh