学习新的Rails应用程序并为其编写一些测试。在编写测试时,遇到的问题是:
撰写'背景'是什么意思?在使用黄瓜的水豚测试?为什么我们写'背景'什么?可以避免吗?
- >它与测试数据库有什么关系吗?或者它是否作为" Scenario"?
的数据库Feature: User signup
As a user
I want to sign in
So I can use service features
**Background**:
Given user with "jack@daniles.com" email and "qwerty" password
Scenario: Signing in with correct credentials
When I go to sign in page
And I fill in "email" with "jack@daniles.com"
And I fill in "password" with "qwerty"
And I click "Login" button
Then I should see "Welcome, jack@daniles.com!"
答案 0 :(得分:2)
后台在每个场景之前运行,但在任何Before Hooks之后运行。 它的DRY策略用于编写黄瓜场景。一套"先决条件"在运行实际测试用例之前应该执行的步骤。
例如。在检查仪表板或配置文件页面内容之前,用户必须登录。因此,登录的覆盖范围将在内部完成"背景"部分 然后你将有2个测试用例
背景: //获取用户登录
场景://访问仪表板页面.....
场景://访问个人资料页面....
了解更多信息https://github.com/cucumber/cucumber/wiki/Background
对于不同的用户组,您可以使用Scenario Outline 这是一个例子:
https://makandracards.com/makandra/18905-how-to-not-repeat-yourself-in-cucumber-scenarios
希望这有帮助!!!
答案 1 :(得分:1)
背景的要点是为几个场景定义一个共同的起点。如果你只有一个场景,那么它只能作为将事物分成几部分的手段。如果您熟悉单元测试框架,则它类似于xunit系列中的setup方法,如果使用rspec则类似于before block。为了运行测试, background 中的内容也可以在场景中。这是一种重用机制。
后台与测试数据库之间没有直接关系。从黄瓜运行的所有步骤都可能会打到数据库。 后台用于在数据库中设置良好的起始状态。根据您的黄瓜/水豚配置,数据库将在每个方案之间重置,并且在每个方案之前再次运行背景。