首页 > 解决方案 > 空手道 DSL_GET 每个参数有两个值。验证它们是否包含在响应中

问题描述

这是我的特点:

Feature: test
Background:
    Given url baseUrl + pathApiSurvey

Scenario: filtro varios valores
    Given path id_survey_erc,'controls',69, 'evidences'
    And param nombre = 'postman,extorsion'
    When method Get
    * print response
    Then status 200
    And match response.status == 'success'
    And match response.data !contains null
    And match each response.id[*].nombre contains any 'postman','extorsion'

在我正在测试的 api 中,您可以通过逗号分隔的多个值过滤参数。通过我拨打的电话,它向我显示“名称”包含“邮递员”或“勒索”的记录

示例响应:

{
    "status": "success",
    "code": 200,
    "current_page": 1,
    "data": [
        {
            "id": 1,
            "id_evidencia": 1,
            "id_encuesta": 43,
            "identificador": 2,
            "tipo": 15,
            "periodicidad": 1,
            "fecha": 1633310022,
            "activa": 1,
            "nombre": "prueba evidencia modificada por postman",
            "evidencia_modificada": 1
        },
        {
            "id": 2,
            "id_evidencia": 2,
            "id_encuesta": 43,
            "identificador": 2,
            "tipo": 16,
            "descripcion": null,
            "ubicacion": null,
            "size_evidencia": null,
            "periodicidad": null,
            "fecha": null,
            "activa": 1,
            "nombre": "evidencia 2 extorsion por amenaza C1",
            "evidencia_modificada": 1
        }
    ]
}

我无法通过组合条件逻辑和匹配包含来验证。有人可以帮助我。谢谢!

标签: karate

解决方案


这一行是一个解决方案:

* match each response..nombre == "#? _.includes('postman') || _.includes('extorsion')"

如果需要了解它的工作原理,请阅读文档,另请参阅:https ://stackoverflow.com/a/50350442/143475


推荐阅读