Behat:在特定订单中运行方案,或从另一个方案引用方案

时间:2016-09-12 08:43:00

标签: php bdd behat

我正在使用 Behat Mink 从我的网站上进行一些功能测试。现在有一个功能,我将一些文件上传到服务器,然后我必须在报告中验证服务器中所做的更改,这些更改是由上载文件引起的。现在,在报告中,我必须搜索每个条目并验证是否显示了正确的数据。现在我可以把所有这些都放在一个功能上,因为它会导致它变得太大和混乱,尤其是关于验证数据的部分,我必须创建一个带有状态的FeatureContext,它接收搜索数据和结果数据分开的步骤,或者我必须将搜索数据和预期的结果数据放在一个表中,这不是很干净。我也不能使用场景大纲,因为这会导致每次Scenario执行时上传文件,这似乎也不好。
因此,处理此问题的最佳方法似乎是,为上传和检查功能创建单独的方案,并执行以下操作之一:
1.以某种方式告诉Behat在'上传'场景后立即执行'检查'场景。
2.从'检查'场景中调用'上传'场景。
如何才能完成这两种选择?如果没有,那么处理这个问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您需要确保上传文件,方案应该是独立的。

使用背景进行设置,这样如果背景失败,则会跳过以下方案。

节省时间而不是每次上传的关键是检查文件是否以某种方式上传或检查第一次设置步骤是否成功执行。

例如,在设置步骤中,您可能会遇到if(!isUploaded){upload the file}等条件。

上传可以检查变量的存在,对于在第一次成功执行步骤时设置这些变量的情况,或者可以检查文件是否通过其他方式上传(在某处检查文件名或检查)前端有些变化。)


@javascript @insulated
Feature: Search

  Background:
    Given I upload the search config file if needed
    And I am on homepage

  Scenario: Search - search with valid term
    When I search for phone
    Then the search result page should contain phones

  Scenario: Search - search with valid term
    When I search for blabla
    Then the search result page should contain no items found message

'如果需要,我上传搜索配置文件' - 应该包含检查以查看文件是否已更新,如果不是,则执行对上传文件的步骤的调用。