2014-12-10 2 views
2

Я работаю над планом тестирования нашего веб-приложения REST, и у нас есть несколько общих типов тестов, которые имеют общие критерии, которые мы хотим проверить. Например, при создании объектов через API мы имеем общий набор ожиданий для ответа JSON; Идентификатор должен быть установлен, созданная дата должна быть установлена, и т.д.Модульность утверждения JMeter (можно ли повторно использовать утверждения?)

Теперь я хотел бы моделировать свои планы, как это:

  • Thread Group
    • пользователей (Simple Controller)
      • Пользователь создания тестов (Simple Controller)
        • Создать тест 1 (Sampler)
        • Создать тест 2 (Sampler)
        • Создать тест 3 (Sampler)
        • Общие Создание Утверждает (модуль контроллера)
      • Пользователь Удалить тесты (Simple Controller)
        • Пробоотборники ...
        • Общие Удалить Утверждает (Контроллер модуля)
    • Events (Simple Controller)
      • событий Создание тестов (Simple Controller)
        • Пробоотборники ...
        • Общие Создание Утверждает (модуль контроллера)
      • Событие Удалить Тесты (Simple Controller)
        • Пробоотборники ...
        • Общие Удалить Утверждает (модуль контроллера)
  • Группа Нить для общих утверждений (отключено)
    • Общие Создание утверждения (Simple Controller)
      • BSF Утверждение 1
      • BSF Assertion 2
      • BSF Утверждение 3
    • Общие Удалить assert (Simple Controller)
      • УТВЕРЖДАЕТ ...

Теперь я понимаю, как балльные работы и что, если я поместил утверждение, где BOLD контроллеров модуля ЭД они будут вызываться для каждого пробоотборника. Тем не менее, я бы предпочел не копировать-вставить-сохранить многочисленные копии тех же утверждений в каждом из этих мест. Следовательно, почему я хочу, чтобы один раз определял утверждения, и вызывать там, где это необходимо.

Однако при таком подходе значения ACCENT ed, помещенные в простые простые контроллеры, никогда не вызываются (подтверждается с помощью утверждения BSF с сообщениями протоколирования). Если я поместил дополнительный пробоотборник в обычный контроллер простых утверждений, он будет вызван. Но только один раз.

Я использую JMeter 2.12, но подтвердил, что JMeter 2.8 ведет себя одинаково.

Итак, как я могу использовать JMeter для определения утверждений один раз и повторного использования их в любом месте?

Спасибо!

ответ

0

В итоге я стал творческим. Использование утверждений JSR223 в Javascript Я выполнил то, что хотел. Это естественное соответствие, потому что все данные ответа, которые я хочу протестировать, находятся в JSON, YMMV.

В пользовательских переменных Я определяю те тесты, которые я хочу выполнить, используя Javascript.

тесты как:

TEST_JSON:

try 
{ 
    eval('var obj = ' + prev.getResponseDataAsString()); 
} catch(e) 
{ 
    setFailed(); 
} 

TEST_RESULT_SUCCESS

if(obj.status != "success") 
{ 
    setFailed(); 
}` 

Тогда в утверждении (ы) я могу сделать что-то вроде:

eval(vars.get("TEST_JSON")); 
eval(vars.get("TEST_RESULT_SUCCESS")); 

И I не имеют переписывать тесты снова и снова.

У меня даже есть некоторые некоторые вспомогательные функции, которые я могу добавить к моему утверждению, делая

eval(vars.get("TEST_UTIL")); 

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

0

Невозможно это сделать.

Вы можете попробовать факторинг, используя переменные в пределах утверждений, таким образом, если это ответ на ответ, вы отбросите это.