【问题标题】:Behat: running scenarios in a specific Order, or referencing a Scenario from another oneBehat:以特定顺序运行场景,或引用另一个场景中的场景
【发布时间】:2016-09-12 08:42:59
【问题描述】:

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

【问题讨论】:

    标签: php bdd behat


    【解决方案1】:

    您需要确保文件已上传,场景应该是独立的。

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

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

    例如,在设置步骤中,您可能会遇到类似 if(!isUploaded) { 上传文件 } 的条件。

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

    
    @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
    

    “如果需要,我会上传搜索配置文件”- 应包含检查文件是否已更新以及是否执行对上传文件步骤的调用。

    【讨论】:

    • 还是不干净。问题的主要目的是找到一个简洁的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多