API-интерфейс для создания динамического запроса по Карате из файла CSV, и я не хочу, чтобы тег создавался в запросе, если значение тега пусто в CSV - PullRequest
1 голос
/ 13 октября 2019

Я пытаюсь собрать XML из CSV-файла и хотел удалить теги XML из запроса, если соответствующее значение тега пустое в CSV. У меня есть 2 файла функций, 1 XML и 1 CSV-файл. Ниже мой код.

'' '

request.xml:

<ROUTE>
    <Name>
        <FirstName></FirstName>
        <LastName></LastName>
    </Name>
</ROUTE>

getQuoteTest.feature:
@tag
Feature: Get Quote Test

Scenario Outline:

* call read('classpath:getQuote.feature') {'FirstName':"<FirstName>",'LastName':"<LastName>"}

Examples:
| read('classpath:TestData.csv') |

CSV file:
FirstName    LastName
Matt         Chat
(blank)      John
Shane        Bond
Andrew      (blank)

getQuote.feature
@ignore
Feature: Get Quote

Background:

Scenario:
* xml req = read('classpath:request.xml')
* set req/ROUTE/Name/FirstName = FirstName
* set req/ROUTE/Name/LastName = LastName

Given request req
When method POST
Then status 200
And print response

' ''

When FirstName is blank, I don't want <FirstName></FirstName> tags to be present in my request xml. It would be great if I can get the exact code.
Thanks in advance !

1 Ответ

1 голос
/ 14 октября 2019

Автономный код, который вы можете запустить, а затем настроить для своих нужд:

Feature: Conditional Example

    Background:

    Scenario Outline:
        * def req =
            """
            <ROUTE>
                <Name>
                    <FirstName><FN></FirstName>
                    <LastName><LN></LastName>
                </Name>
            </ROUTE>
            """
        * xml req2 = req
        * if (req2.ROUTE.Name.LastName == null) karate.remove("req2","//LastName")
        * if (req2.ROUTE.Name.FirstName == null) karate.remove("req2","//FirstName")
        * print req2

        Examples:
            | FN     | LN   |
            | Matt   | Chat |
            |        | John |
            | Shane  | Bond |
            | Andrew |      |
...