【发布时间】:2021-08-18 05:17:52
【问题描述】:
在机器人框架中编写BDD风格的测试用例时,如果没有测试或关键字,那么在Given语句中应该写什么? 我正在使用机器人框架中的 BDD 样式编写 API 测试。但是对于将要执行的第一个测试,没有将要执行的 Given 语句。有没有我们可以使用的占位符? 请推荐
【问题讨论】:
标签: api robotframework bdd
在机器人框架中编写BDD风格的测试用例时,如果没有测试或关键字,那么在Given语句中应该写什么? 我正在使用机器人框架中的 BDD 样式编写 API 测试。但是对于将要执行的第一个测试,没有将要执行的 Given 语句。有没有我们可以使用的占位符? 请推荐
【问题讨论】:
标签: api robotframework bdd
如果没有 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
【讨论】:
你跳过它,不要写它;或者,如果您确实想要一些东西 - 例如样式,请写 Given No Operation。
【讨论】:
场景发生的背景总是有的。也许应用程序已经在运行,或者已经安装,或者您已经在主页上。对于 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 上的这篇博文。
【讨论】: