2016-05-16 2 views
0

У меня есть некоторые функциональные тесты, созданные через JMeter. Он довольно большой, но я не могу справиться с одной простой проверкой. Я генерирую свойства с использованием предварительного процессора BSF с помощью JS. Параметр (позволяет называть его «payment_fee») должен быть сгенерирован только в том случае, если другой параметр (позволяет назвать его «роль») имеет значение = 1. В этом случае мы отправляем предварительно сгенерированное целое число в pay_fee, и все работает хорошо. Но если role = 2, мы ничего не должны отправлять в pay_fee. Проблема заключается в том, что я не знаю, как сказать JMeter: в случае, если role = 1 использует переменную с предварительно сгенерированной переменной payment_fee, но если role = 2, вы не должны использовать эту переменную, поэтому просто отправляйте пустое значение для payment_fee. Сервер ждет целое число, поэтому пустая строка или NULL были отклонены.Как отправить «пустую» переменную в JMeter

Для уточнения: Постараюсь объяснить более понятным. Вот часть моего кода

 var role = Math.floor(Math.random()*3+1) 
     var paymentType = ["creditcard","cash"] 
     var randomPay = installerType[Math.floor(Math.random()*installerType.length)]; 
     var payment = ""; 
     var paymentFee; 
     if (role == 1){ 
      payment+=randomPay, 
      paymentFee = Math.floor((Math.random() * 999) + 1)/10.00 
     } 
vars.put("role", role); 
vars.put("payment", payment); 
vars.put("paymentFee", paymentFee); 

И если роль == 1 я должен опубликовать значение paymentFee. Например: http://prntscr.com/b50kk1 НО! if role == 2 || Роль == 3 я должен удалить это значение, поэтому оно должно быть, как это http://prnt.sc/b50l82

+0

как генерируется «роль»? разместите свой BSF-код, если он имеет отношение к генерации параметров –

+0

Доступны 3 роли, а для роли 2 и 3 я должен отправить пустой параметр payment_fee. var role = Math.floor (Math.random() * 3 + 1); –

+0

, то что мешает вам установить payment_fee в том же коде, то есть 'if (role == 1) vars.put (" payment_fee "," 1 "); else vars.put ("payment_fee", ""); ' И тогда в smapler просто используйте' $ {payment_fee} 'для переменной –

ответ

0

Я не совсем понимаю, что вы пытаетесь сделать, как ваши 2 заявления конфликтуют:

  • Но если роль = 2, то мы не должны размещать ничего в payment_fee
  • ожидает сервера для целого, так пустая строка или NULL была отвергнута

Вы должны знать несколько бит s о свойствах JMeter:

  1. Недвижимость за рубежом JVM. Когда вы установите свойство, он будет «жить», пока вы не выйдете из JMeter.
  2. Доступ к свойствам доступно всем темам Thread Groups.

Так может быть, когда вы определяете свойство раньше или другим потоком и ожидаете, что он не будет установлен позже.

Также предварительный процессор BSF и JavaScript не являются наилучшей комбинацией с точки зрения производительности, рассмотрите возможность переключения на JSR223 PreProcessor and Groovy language.

+0

Спасибо за ваш ответ, но это не то, что я ищу. Я думаю, что я не был так ясен в своем вопросе, поэтому я его отредактировал. Пожалуйста, проверьте это, я думаю, теперь вы полностью поймете это. –