2015-04-16 1 views
0

У меня есть тест в JMeter, и с графическим интерфейсом он работает отлично, но когда я запускаю его с использованием кода Java (например, здесь: http://blazemeter.com/blog/5-ways-launch-jmeter-test-without-using-jmeter-gui), я не могу получить параметры из свойств. Если я напечатаю их в журнале бобы, я могу их увидеть. Но, когда я пытаюсь использовать этот параметр в потоке Group как количество пользователей, он не работает.При запуске теста Jmeter из java его не используют свойства

Подробнее:

  1. У меня есть подстава нить, которая подсчитывает строки файла CSV и вставляя значение для свойства, так что в следующем потоке я использовать это свойство, чтобы установить величину пользователей. (эта логика происходит дважды во время теста).
  2. Я использую Maven зависимостями: ApacheJMeter_http V2.11 (2,13 создает конфликт с здравом pools2 и г-убежище)
  3. затмение (если это имеет значение)
  4. Цель состоит в том, что единственный параметр Я передам тестовый прогон тестовый файл.
  5. Пропозиция в тесте выглядит так: ${__P(paramName)} также попытался $(__property{paramName}).
  6. Я также создал свойство в самом файле вместо того, чтобы использовать в BeanShell JMeterUtils.setProperty("paramName","5");

Добавление фрагмента боб оболочки:

import org.apache.jmeter.util.JMeterUtils; 
import java.io.*; 

BufferedReader br = new BufferedReader(new FileReader("C:\\res\\movieResultData.csv")); 
String line; 

int counter = 0; 
while ((line = br.readLine()) != null) { 
    counter++; 
} 
br.close(); 
JMeterUtils.setProperty("statsThreadNum",Integer.toString(counter-1)); 

Мой код Java:

@Test 
public void ttt() throws Exception { 
    // JMeter Engine 
    StandardJMeterEngine jmeter = new StandardJMeterEngine(); 

    // Initialize Properties, logging, locale, etc. 
    JMeterUtils.loadJMeterProperties("C:\\apache-jmeter-2.12\\bin\\jmeter.properties"); 
    JMeterUtils.setJMeterHome("C:\\apache-jmeter-2.12"); 
    //JMeterUtils.initLogging();// you can comment this line out to see extra log messages of i.e. DEBUG level 
    JMeterUtils.initLocale(); 

    // Initialize JMeter SaveService 
    SaveService.loadProperties(); 

    // Load existing .jmx Test Plan 
    FileInputStream in = new FileInputStream("C:\\apache-jmeter-2.12\\bin\\statsTests2.jmx"); 
    HashTree testPlanTree = SaveService.loadTree(in); 
    in.close(); 

    // Run JMeter Test 
    jmeter.configure(testPlanTree); 
    jmeter.run(); 
} 

ответ

2

В правильный синтаксис должен быть:

${__P(prop_name)} 

Если вы работаете через Java, только реализацию, убедитесь, что вы передаете файл свойств для вашей виртуальной машины Java, как он запускается или использовать следующий код Snippit:

JMeterUtils.loadJMeterProperties("/path/to/your/jmeter/bin/jmeter.properties"); 

вы используете Apache Exec для запуска JMeter из java как внешнего процесса? Если да, то убедитесь, что вы строите ваше заявление CMD строки, используя следующие параметры:

-p, --propfile {argument} 
      the jmeter property file to use 
-G, --globalproperty (argument)[=(value)] 
      Define Global properties (sent to servers) 

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

Редактировать: Я считаю, что проблема может заключаться в том, как ваша Beanshell получает доступ к свойствам. Мне никогда не приходилось обращаться к классу JMeterUtils, чтобы манипулировать переменными или свойствами в JMX.

Beanshell Синтаксис для назначения свойства:

props.put("test_prop_name","prop_value"); 

Beanshell синтаксис для получения свойства:

props.get("test_prop_name"); 

Beanshell синтаксис для присвоения свойства переменной:

vars.put("test_var_name",props.get("test_prop")); 

Этот переменная может быть указана в пробоотборнике следующим образом:

${test_var_name} 

Или вы должны быть в состоянии Accesss свойство непосредственно в пробоотборник, как это:

${__P(test_prop_name)} 

Кроме того, используйте следующий POM, если вы хотите, чтобы исправить проблемы Maven с JMeter 2.13:

<dependencies> 
    <dependency> 
     <groupId>org.apache.jmeter</groupId> 
     <artifactId>ApacheJMeter_config</artifactId> 
     <version>2.13</version> 
     <scope>provided</scope> 
     <exclusions> 
      <exclusion> 
       <groupId>commons-math3</groupId> 
       <artifactId>commons-math3</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>commons-pool2</groupId> 
       <artifactId>commons-pool2</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.jmeter</groupId> 
     <artifactId>ApacheJMeter_java</artifactId> 
     <version>2.13</version> 
     <scope>provided</scope> 
     <exclusions> 
      <exclusion> 
       <groupId>commons-math3</groupId> 
       <artifactId>commons-math3</artifactId> 
      </exclusion> 

      <exclusion> 
       <groupId>commons-pool2</groupId> 
       <artifactId>commons-pool2</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-math3</artifactId> 
     <version>3.4.1</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-pool2</artifactId> 
     <version>2.3</version> 
     <scope>provided</scope> 
    </dependency> 
</dependencies> 
+0

привет спасибо за ответ. – mushi8

+0

Привет, спасибо за ответ. Ну, помчатся за это спасибо :). но проблема все еще стоит. Я использовал знак $, это была опечатка. также отредактировал и предоставил код beanshell, который я использую. – mushi8

+0

Эй, извините, мне потребовалось немного, чтобы увидеть этот комментарий! Редактирование моего ответа, чтобы я мог использовать формат кода. Проверьте его над секцией POM. –

 Смежные вопросы

  • Нет связанных вопросов^_^