机器人框架 - BDD 风格 - No Given present

robot framework - BDD style- No Given present

在robot framework中写BDD风格的测试用例时,如果没有test或者keyword,那么Given语句应该写什么呢? 我正在使用机器人框架中的 BDD 样式编写 API 测试。但是对于将要执行的第一个测试,没有将要执行的 Given 语句。有没有我们可以使用的占位符? 请推荐

你直接跳过,不写;或者,如果您确实想要一些东西 - 例如样式,请写 Given No Operation.

如果没有Given语句,那么你应该跳过它。恕我直言,您也不应该为样式而写。 BDD 旨在表达业务需求并具有虚拟 G-W-T 语句,它不解释需求没有意义。

例如,您的 BDD 应如下所示

When the user registers only with First Name and Last Name 
And doesn't enter Age 
Then the error message "Please enter Age" should be displayed

总是有一些情景发生的背景。也许应用程序已经 运行ning,或者已经安装,或者您已经在主页上。对于 API,您提供的任何服务都可用。

那个上下文就是你的Given

行为的触发器 - 导致变化发生的事情 - 是事件,或者 When

通常情况下,当您启动应用程序或服务时,会创建一个默认状态。没有触发器;事情就是这样开始的。例如,您可能会看到类似这样的内容:

Given the Tetris game is running
Then the grid should be empty

如果你的场景关心的是游戏能否正常启动,可以表述为When:

When I start the game
Then the grid should be empty

即便如此,也可能有:

Given the game is installed

如果使用 API,假设 API 可用,我可能会在此处进行检查以查明它是否真的可用(是的,我的意思是放置一个Given 中的断言)。如果测试失败,通常是因为服务没有启动;这通常是因为您遇到了环境问题。这是标记它的好方法。

也可以将步骤输入为英文,但在代码中将其留空,如果您真的对起始状态的良好状态有信心的话。

Given I am on Google.com

BDD 中场景的目的不仅仅是自动化测试;它是用具体的例子来说明行为的意图和价值。所以假设你从零开始。没有互联网。没有申请。没有API。您的场景需要更改为 运行 的哪些内容?那是你的上下文。我发现,对于那些开始的场景,缺少 When 比缺少 Given 更常见,因为没有用户触发任何东西。

将您的场景视为带有示例的动态文档,而不是测试,可能有助于阐明您需要包含的内容。 BDD 场景是测试,是通过对话进行探索并自动生成结果的一个很好的副产品。

您可能也喜欢 4 different ways of handling Givens 上的此博客 post。