我有一个“行为”功能,对其进行了大量测试。
我只需要运行特定的场景来满足开发需求。
我该怎么做?
(最好在命令行上)
如果您想对该功能运行单个测试,请使用
-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
有关更多信息,请查看命令行参数的文档。他们的附录部分隐藏了很多有用的信息。
注意:在我写这篇文章时,由于这个问题,它无法与 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
不仅会运行测试,还允许打印/日志记录语句进行调试。
要仅运行单个场景,您可以使用
-n
和场景名称:
$ behave -n 'clicking the button "foo" should bar the baz'
我在上面使用单引号将场景名称保留为 -n
的
one参数。否则,shell 会将场景名称的每个单词作为单独的参数传递。
标签提供了几个选项...
1)标记慢的,然后通过调用逆函数来避免,例如
behave -t '~@slow_tag_name'
2)但是,为了获得最大的灵活性,我个人建议使用唯一的 ID 标记每个场景。例如我使用
@YYYY_MM_DD_HHmm_Initials
标签方案,因为它足够独特,并且可追溯性很有用/有趣。然后,您始终可以简单地使用标签调用并让它运行场景,例如
behave @2015_01_03_0936_jh
behave
中非常强大的技巧:
behave --wip
并暂时用
@wip
标记您正在开发的测试。除了其他提到的选择测试的方法(--name
,--tags
,--include
)之外,这将是我的#1答案,但在@Cynic的答案中还隐藏着很多。
您也可能对这篇漂亮的文章感兴趣,它描述了如何从行为场景大纲中运行单个测试。
例如
#This is Gherkin
Feature: Running a single test from a scenario outline
@scenarioGroupName @scenarioGroupName<scenarioName>
Scenario Outline: test running one of many scenarios, iteration <n> / <scenarioName>
Given test is index <n> for <scenarioName>
When we do something with <scenarioParameter>
Then all the checks pass
Examples: Test scenarios
|n | scenarioName | scenarioParameter
|1 | Able | first
|2 | Baker | second
|3 | Charlie | third
#etc
要仅使用场景 2/面包师的数据来运行此程序,可以这样做
# This is shell
behave -k --tags=@scenarioGroupNameBaker
注意
scenarioGroupNameBaker
标签是如何构建的。
对于每个示例行,大纲/模板标记 scenarioGroupName<scenarioName>
将 <scenarionName>
替换为示例行中的值,以给出每个场景行的标记名称:D