(黄瓜)Background和Before标签之间有什么区别

Gre*_*ito 5 tags cucumber

据我所知,@Before钩子在每个场景之前执行,现在我已经遇到了Background标签,但在我看来它与@Before标签具有完全相同的功能,除了它自己的步骤.任何人都可以解释现实生活中的差异吗?什么时候我必须使用Background而不是Before?

meu*_*caa 6

根据Cucumber文档,这是做什么的Before:

在每个场景的第一步之前运行钩子之前.它们的运行顺序与注册顺序相同.

这是做什么的Background:

背景允许您在单个功能中向场景添加一些上下文.背景很像包含许多步骤的场景.不同之处在于运行时.后台在每个场景之前运行,但在任何Before Hooks之后运行.

事实上,正如你已经注意到的那样,它们的结构有点不同.通常的做法是使用它们如下:

  • 使用Background时您提供客户可读的先决条件,以您的场景
  • Before在场景之前必须进行一些技术设置时使用

但这里要理解的主要是操作的顺序:

在挂钩1 - >挂钩2之前 - > ... - >背景 - >场景

它们只代表不同级别的前提条件.