Como usar valores dinâmicos para os Recursos de Karatê

Eu preciso onde devo usar valores dinâmicos nos recursos dos meus testes de karat

Eu vim através de algumas das perguntas e respostas como esta:Como ler dados de entrada de uma planilha do Excel e transmitir a carga útil JSON na estrutura de karat

Mas não importa o quanto eu tente, eu não posso fazer isso acontecer. Acredito que devo compartilhar as partes do código que estou tentando usar, para que uma discussão possa começa

Tenho uma solicitação SOAP para criar novos usuários, conforme abaixo:

<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xxxxxx>
<soapenv:Header/>
<soapenv:Body>
    <int:createSubscriber soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
        <custBean xxxxx>
            <accountNumber xsi:type="xsd:string">#(accountNo)</accountNumber>
            <custName xsi:type="xsd:string" xs:type="type:string">Xbox</custName>
        </custBean>
        <addSubscriberBean xxxxx>7
            <subscriberID xsi:type="xsd:string">#(subsID)</subscriberID>
            <password xsi:type="xsd:string" xs:type="type:string">0</password>
            <areaID xsi:type="xsd:string" xs:type="type:string">1</areaID>
            <lineOfCredit xsi:type="xsd:int" xs:type="type:int"></lineOfCredit>
            <creditCycle xsi:type="xsd:int" xs:type="type:int"></creditCycle>
            <points xsi:type="xsd:int" xs:type="type:int"></points>
            <bandwidth xsi:type="xsd:int" xs:type="type:int"></bandwidth>
            <physicalPorts xsi:type="xsd:string" xs:type="type:string">8080</physicalPorts>
            <mobilePhoneNo xsi:type="xsd:string" xs:type="type:string">#(mobile)</mobilePhoneNo>
            <stbCount xsi:type="xsd:int" xs:type="type:int">5</stbCount>
            <oTTCount xsi:type="xsd:int" xs:type="type:int">10</oTTCount>
            <subscriptionType xsi:type="xsd:string" xs:type="type:string">#(subsType)</subscriptionType>
        </addSubscriberBean>
        <sequenceID xxxxx>1234567840123422700</sequenceID>
    </int:createSubscriber>
</soapenv:Body>

omo você viu, tenho algumas variáveis que serão fornecidas de fora e são elas: accountNo, subsID, subsType eMóve.

Agora, eu tenho um arquivo de recurso onde faço uma chamada para um serviço SOAP usando o arquivo acima. Estou atribuindo novos valores a todas as variáveis de solicitação, para que eu possa criar novos usuários o tempo tod

Aqui está o exemplo:

Feature: Create Subscriber Feature End-To-End Scenario

Background:
* url SOAP_CREATE_SUBSCRIBER_HOST

* def accountNumber = '789'
* def subscriberID = '456'
* def userMsisdn = '123'
* def subscriptionType = 'ASD'

* def createUser = read('create-user-soap.xml') # This is the above one
* replace createUser
  | token              | value               |
  | #(accountNo)       | accountNumber       |
  | #(subsID)          | subscriberID        |
  | #(mobile)          | userMsisdn          |
  | #(subsType)        | subscriptionType    |

Scenario: Create Subscriber
Given request createUser
When soap action SOAP_CREATE_SUBSCRIBER_HOST
Then status 200

And match //returnCode == 0
And match //returnMessage == 'The operation succeeded.'

No entanto, preciso criar vários usuários, portanto, preciso usar variáveis dinâmicas para chamar meu .xml arquivo muitas vezes.

Verifiquei os documentos e respondo aqui:Como ler dados de entrada de uma planilha do Excel e transmitir a carga útil JSON na estrutura de karat

Mas não consegui localizá-lo na minha situação.

Desde já, obrigado

EDITAR Estou ciente da situação em que preciso usar table ou json ou csv ou excel, tipo de suporte de dados para usá-lo tarde, então abaixo está a tabela de usuários. Só não sei como implementá-lo no meu arquivo de recursos para que ele possa criar muitos usuário

    * table userstable
  | accountNo   | subsID         | mobile       | subsType   |
  | '113888572' | '113985218890' | '1135288836' | 'asd'     |
  | '113888573' | '113985218891' | '1135288837' | 'qwe'     |
  | '113888582' | '113985218810' | '1135288846' | 'asd'     |
  | '883889572' | '883985219890' | '8835298836' | 'qwe'     |
  | '773888572' | '773985218890' | '7735288836' | 'asd'     |
  | '663888572' | '663985218890' | '6635288836' | 'qwe'     |
  | '553888572' | '553985218890' | '5535288836' | 'asd'     |
  | '443888572' | '443985218890' | '4435288836' | 'qwe'     |
  | '333888572' | '333985218890' | '3335288836' | 'asd'     |
  | '223888572' | '223985218890' | '2235288836' | 'qwe'     |
  | '165488572' | '175585218890' | '1114788836' | 'asd'     |

EDIT 2: Após um profundo mergulho em algumas respostas e na leitura de muitos documentos, encontrei a solução abaixo. Deve haver um.característic onde você coloca seu método de criação para ativar o mecanismo de criação de usuário único. Vai ficar assim:

@ignore
Feature: re-usable feature to create a single user

Background:
* url SOAP_CREATE_SUBSCRIBER_HOST

Scenario: Create single user

* match __arg == bulkusers[__loop]
* def createUser = read('xxxx')

Given request createUser
When soap action SOAP_CREATE_SUBSCRIBER_HOST
And request { accountNo: '#(accountNo)', subsID: '#(subsID)', mobile: '#(mobile)', subsType: '#(subsType)' }
Then status 200

O código acima pode ser colocado como um modelo em sua mente. Por outro lado, precisamos de outro arquivo **. Feature ** para chamar esse modelo. E vai ficar assim:

Feature: call template feature.

Background: * url SOAP_CREATE_SUBSCRIBER_HOST

Cenário: use a tabela de bulkusers para criar usuários padrão

* table bulkusers
  | accountNo   | subsID         | mobile       | subsType |
  | '131451715' | '133451789134' | '5335167897' | 'asd'   |
  | '122452715' | '123452789124' | '5334287897' | 'qwe'  |
  | '124453715' | '123453789114' | '5334367817' | 'asd'   |

* def result = call read('user-create.feature') bulkusers
* def created = $result[*].response

* match result[*].__loop == [0, 1, 2]
* match created[*].name == $bulkusers[*].name

* def createUser = read('xxx')

O que esse código alcança é que ele está empacotando a tabela de bulkusers com user-create.feature, portanto, user-create.feature classe de modelo sendo chamada recursivamente até o número de variáveis da tabela terminar, com as variáveis de bulkuser

questionAnswers(1)

yourAnswerToTheQuestion