3

我正在尝试使用 behat BDD 和 Mink 与 selenium webdriver for php 自动化 Sugarcrm 功能。我已经正确安装了它们,并且能够一起运行 behat 和 mink。例如检查登录到sugarcrm 作为一项功能。

现在的问题是当我创建两个功能文件时,分别是 login.feature 和 setup.feature。Behat 成功地在浏览器中自动执行登录过程,但一旦切换到需要从以前的功能维护登录会话的 setup.feature,它就会破坏会话并返回登录窗口。因此,第二个功能测试总是失败。

我如何为我的功能套件中的每个功能维护会话?

只是告诉你们,我也在一个功能文件中尝试过它们作为不同的场景,但没有运气,因为同样的事情正在发生

如果有人知道,请帮助我。

4

2 回答 2

11

功能和场景应该是独立的。如果您在一种情况下执行某项操作,则该状态不会转移到下一种情况,这是预期的行为。

我不确定你想要达到什么目标,但你肯定做错了什么。

编辑:

如果您需要在每个场景之前登录用户,只需编写一个元步骤来执行所有必要的操作:

Given I am logged in

您可以使用步骤执行链接或直接调用 Mink。

如果您的功能文件中的每个场景都需要登录,您可以使用后台:

Background:
    Given I am logged in

Scenario: Listing users
    Given ...

Scenario: Removing a user
    Given ...
于 2012-09-27T10:31:05.180 回答
1

我完全同意 Jakub Zalas 的回答

尽管如此,如果您的目标是在每个功能中摆脱重复的代码声明背景,我相信您可以使用钩子在每个场景之前执行所有必需的操作

于 2013-01-18T21:37:15.403 回答