В JMeter, как я могу создать несколько блоков полезной нагрузки при выборе разных значений для каждого элемента из файла CSV? - PullRequest
0 голосов
/ 06 октября 2019

В приведенном ниже примере мне нужно от 1 до 10 блоков <ACCOUNT> полезной нагрузки случайным образом (в примере показаны 4 блока <ACCOUNT> полезной нагрузки) , а элементы <ACCOUNT_TYPE_CODE>, <OPEN_DATE>и <MEMBER_ID> необходимо выбрать значения последовательно или случайным образом из файла CSV. Даже один и тот же поток должен выбирать разные значения для каждого блока полезной нагрузки <ACCOUNT>. Как я могу сделать это в JMeter? Спасибо.

<IN xmlns:ns3="http://schema.example.com/queryparam" xmlns:ns2="http://schema.example.com/header" xmlns="http://schema.example.com/Account/CreateAC">
      <ns2:HEADER>
            <ns2:TRANID>hgjhkjhjkhjg</ns2:TRANID>
            <ns2:TIMESTAMP>2019-10-06T15:32:470Z</ns2:TIMESTAMP>
      </ns2:HEADER>
      <ns3:QUERY>
            <ns3:PARAM>
                  <ns3:ITEM>OPERATOR</ns3:ITEM>
                  <ns3:VALUE xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">CREATEAC</ns3:VALUE>
            </ns3:PARAM>
      </ns3:QUERY>

    <ACCOUNT_SPECIFIC>
            <ACCOUNT>
                <ACCOUNT_TYPE_CODE>CD</ACCOUNT_TYPE_CODE>
                <OPEN_DATE>2019-10-06</OPEN_DATE>
                <MEMBER_ID>68768789799<MEMBER_ID>
            </ACCOUNT>
            <ACCOUNT>
                <ACCOUNT_TYPE_CODE>Checking</ACCOUNT_TYPE_CODE>
                <OPEN_DATE>2019-10-05</OPEN_DATE>
                <MEMBER_ID>45667568797<MEMBER_ID>
            </ACCOUNT>            
            <ACCOUNT>
                <ACCOUNT_TYPE_CODE>Saving</ACCOUNT_TYPE_CODE>
                <OPEN_DATE>2019-10-04</OPEN_DATE>
                <MEMBER_ID>24535456677<MEMBER_ID>
            </ACCOUNT>
            <ACCOUNT>
                <ACCOUNT_TYPE_CODE>Money Market</ACCOUNT_TYPE_CODE>
                <OPEN_DATE>2019-10-03</OPEN_DATE>
                <MEMBER_ID>898977867554<MEMBER_ID>
            </ACCOUNT>          
    </ACCOUNT_SPECIFIC>
</IN>

1 Ответ

0 голосов
/ 08 октября 2019

Если у вас есть XML-файл, который выглядит следующим образом:

CD,2019-10-06,68768789799
Checking,2019-10-05,45667568797
Saving,2019-10-04,24535456677
Money Market,2019-10-03,898977867554
  1. Добавьте JSR223 PreProcessor как дочерний элемент HTTP-запроса , который запрашивает телохотите параметризовать
  2. Поместите следующий код в область «Сценарий»:

    import groovy.xml.MarkupBuilder
    import org.apache.commons.lang3.RandomUtils
    
    def writer = new StringWriter()
    def xml = new MarkupBuilder(writer)
    
    def csvFileLines = new File('test.csv').readLines()
    
    def lineCounter = 0
    
    xml.IN("xmlns:ns3": "http://schema.example.com/queryparam", "xmlns:ns2": "http://schema.example.com/header", "xmlns": "http://schema.example.com/Account/CreateAC") {
        "ns2:HEADER"() {
            ns2:
            TRANID("hgjhkjhjkhjg")
            ns2:
            TIMESTAMP("2019-10-06T15:32:470Z")
        }
        "ns3:QUERY"() {
            "ns3:PARAM"() {
                "ns3:ITEM"("OPERATOR")
                "ns3:VALUE "("CREATEAC")
            }
        }
    
        xml.ACCOUNT_SPECIFIC() {
            1.upto(RandomUtils.nextInt(1, 11), {
                def line = csvFileLines.get(lineCounter)
                def entries = line.split(",")
                ACCOUNT() {
                    ACCOUNT_TYPE_CODE(entries[0].trim())
                    OPEN_DATE(entries[1].trim())
                    MEMBER_ID(entries[2].trim())
                }
                lineCounter++
            })
        }
    }
    
    sampler.addNonEncodedArgument('', writer.toString(), '')
    sampler.setPostBodyRaw(true)
    
  3. Вот так, приведенный выше код будет генерировать от 1 до 10 ACCOUNT блокирует и устанавливает сгенерированные данные как данные тела сэмплера HTTP-запроса. Общий план тестирования должен выглядеть следующим образом:

    enter image description here

Список литературы:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...