在 behat 和 mink 中的单个功能文件中维护场景之间的会话

Arp*_*uch 4 session behat mink selenium-webdriver

我对此做了很多研发,但无法找到解决方案。

我需要在单个功能文件中维护不同场景之间的登录会话。我已经做了一个函数I am logged in并且我已经在后台编写了。所以在每个场景开始时都会发生登录。但我想要的是跨场景维护单个登录会话。有人可以建议吗?

示例代码是:

Feature: To test the output

Background:
  Given I am logged in 

@javascript
 Scenario: To test the positive input
   When I fill in "test" with "aab"
   And I press "add"
   Then I should see "welcome"

@javascript
  Scenario:To test the negative inputs
    When I fill in "test" with "@#$@!!111"
    And I press "add"
    Then I should see "Sorry,invalid input please try again"
Run Code Online (Sandbox Code Playgroud)

现在,如果另一个人查看我的代码,他就会了解积极和消极的测试用例。但每次重新加载场景时,如果一个功能中有 50 个场景怎么办?对于更大的项目。我登录的每个场景看起来都不太好,我总共浪费了额外的 15 分钟。我想要的是在单个功能文件中的每个场景之后,测试以相同的登录会话继续。

Jak*_*las 5

这是不可能的。行为场景与目的无关。否则,您将面临状态从一种场景泄漏到另一种场景的风险。

您没有从正确的方向解决问题。从长远来看,为了提高速度而牺牲场景分离会损害您的利益。

假设登录作为功能之一进行了测试,在其他需要登录的场景中,您不必使用实际的登录表单。考虑以编程方式进行。

此外,您似乎正在使用 Behat 进行功能测试,而它的构建是为了验证业务期望。你可以考虑直接使用Mink,这会给你更多的力量。