Я создал простой план тестирования в режиме GUI, он содержит 3 HTTP-запроса и "Create cart" ответ содержит "id" , которые мне нужно передать как параметр пути к запросу «Обновить корзину» .
Я использовал экстрактор JSON для извлечения и сохранения этой переменной, а в режиме GUI все работает просто отлично. Я обращаюсь к переменной через $ {token}
У меня есть проблема - я не знаю, как извлечь, сохранить и получить доступ к сохраненной переменной из java код. Я поиграл с JsonPostProcessor, но, похоже, я его неправильно использую.
Пожалуйста, посмотрите код ниже:
...
HashTree testPlanContainer = new HashTree();
HeaderManager headerManager = new HeaderManager();
headerManager.add(new Header("Authorization", "Bearer " + token));
headerManager.setProperty(TestElement.TEST_CLASS, HeaderManager.class.getName());
headerManager.setProperty(TestElement.GUI_CLASS, HeaderPanel.class.getName());
HTTPSampler createCustomer = new HTTPSampler();
...set domain, method, body, etc
HTTPSampler createCart = new HTTPSampler();
...set domain, method, body, etc
JSONPostProcessor jsonPostProcessor = new JSONPostProcessor();
jsonPostProcessor.setRefNames("cart-id");
jsonPostProcessor.setJsonPathExpressions("$.id");
jsonPostProcessor.process();
HashTree composeCreateCartWithJsonExtractor = new HashTree();
composeCreateCartWithJsonExtractor.add(createCart, jsonPostProcessor);
HTTPSampler updateCart = new HTTPSampler();
updateCart.setPath("path" + ${cart-id}); //how can I access this variable from java code?
... set domain, method, body, etc
LoopController loopController = new LoopController();
... set details
SetupThreadGroup threadGroup = new SetupThreadGroup();
... set details
TestPlan testPlan = new TestPlan("My test plan");
...set details
testPlanContainer.add(testPlan);
HashTree composer = testPlanContainer.add(testPlan, threadGroup);
composer.add(headerManager);
composer.add(createCustomer);
composer.add(composeCreateCartWithJsonExtractor);
composer.add(updateCart);
SaveService.saveTree(testPlanContainer, new FileOutputStream("src/main/resources/jmxFile.jmx"));
Summariser summariser = new Summariser("summaryOfResults");
ResultCollector resultCollector = new ResultCollector(summariser);
...
testPlanContainer.add(testPlanContainer.getArray()[0], resultCollector);
...
Я считаю, что моя ошибка где-то рядом с JsonPostProcessor, возможно, мне следует использовать другой класс или другой способ как извлекать, хранить и вызывать данные из одного запроса в другой. Буду признателен за любой совет