Как добавить экстракторы regex и менеджеры cookie в файл Jmeter .jmx, используя код Java? - PullRequest
0 голосов
/ 02 июля 2019

Я использую код Java для создания файла .jmx для графического интерфейса Jmeter. Я хочу извлечь ответ GET из сэмплера HTTP-прокси, который я использую для «входа в систему», ответ используется в качестве идентификатора сеанса для распознавания пользователя. Более того, мне нужен следующий сэмплер, чтобы использовать извлекаемую переменную. Кроме того, мне также нужен менеджер файлов cookie для каждой группы потоков.

Какой API следует вызывать для добавления экстрактора в сэмплер http-прокси и добавления менеджера файлов cookie в группу потоков?

Я уже создал http-сэмплер, установил путь и установил аргументы. Все, что мне сейчас нужно, это экстрактор, который поможет мне получить переменную, и менеджер файлов cookie

Ниже приведен мой код при создании группы потоков и добавлении сэмплера http в группу потоков

HashTree testPlanTree = new ListedHashTree();
        TestPlan testPlan = new TestPlan("Create JMeter Script From Java Code");
        testPlanTree.add(testPlan);
        HTTPSamplerProxy newSampler = null;
        LoopController loopController;
        ThreadGroup threadGroup = null;
        HashTree threadGroupHashTree = null;
        int i = 1; // exclude the first empty call
        for (ArrayList<String> elementList : calls) {
            if (elementList.size() == 3) {
                System.out.println(elementList);
                loopController = new LoopController();
                loopController.setLoops(1);
                loopController.setFirst(true);
                loopController.setProperty(TestElement.TEST_CLASS, LoopController.class.getName());
                loopController.setProperty(TestElement.GUI_CLASS, LoopControlPanel.class.getName());
                loopController.initialize();

                threadGroup = new ThreadGroup();
                threadGroup.setName(elementList.get(1) + "_" + elementList.get(2));
                threadGroup.setNumThreads(1);
                threadGroup.setRampUp(1);
                threadGroup.setSamplerController(loopController);
                threadGroup.setProperty(TestElement.TEST_CLASS, ThreadGroup.class.getName());
                threadGroup.setProperty(TestElement.GUI_CLASS, ThreadGroupGui.class.getName());
                testPlan.setProperty(TestElement.TEST_CLASS, TestPlan.class.getName());
                testPlan.setProperty(TestElement.GUI_CLASS, TestPlanGui.class.getName());
                testPlan.setUserDefinedVariables((Arguments) new ArgumentsPanel().createTestElement());

                threadGroupHashTree = testPlanTree.add(testPlan, threadGroup);
            }
            else {
                newSampler = new HTTPSamplerProxy();
                LinkedHashMap<String, ArrayList<String>> arguments = httpSamplerList.get(i);
                if (elementList.get(0).equals("Login")) {
                    newSampler.setMethod(arguments.get("HTTPSampler.method").get(0));
                    newSampler.add
                }

                else if  (elementList.get(0).equals("Logout"))
                    newSampler.setMethod(arguments.get("HTTPSampler.method").get(0));
                else
                    newSampler.setMethod(elementList.get(0));

                System.out.println(httpSamplerList.get(i));

                newSampler.setPort(8080);
                newSampler.setPath(arguments.get("HTTPSampler.path").get(0));
                newSampler.setName(elementList.get(0)); // currently use a integer number naming as test
                newSampler.setProperty(TestElement.TEST_CLASS, HTTPSamplerProxy.class.getName());
                newSampler.setProperty(TestElement.GUI_CLASS, HttpTestSampleGui.class.getName());

                // Set up arguments
                if (arguments.get("arguments").size() > 0) {
                    if (arguments.get("HTTPSampler.method").get(0).equals("GET")) {
                        for (int j = 0; j < arguments.get("arguments").size(); j=j+2) {
                            newSampler.addArgument(arguments.get("arguments").get(j), arguments.get("arguments").get(j+1));
                        }
                    }
                    else if (arguments.get("HTTPSampler.method").get(0).equals("POST")||arguments.get("HTTPSampler.method").get(0).equals("PUT")) {
                        newSampler.addNonEncodedArgument("",arguments.get("arguments").get(0) , "");
                        newSampler.setPostBodyRaw(true);
                    }
                }
                threadGroupHashTree.add(newSampler);
                i++;
            }
        }

1 Ответ

0 голосов
/ 08 июля 2019
  1. HTTP Cookie Manager :

    CookieManager cookieManager = new CookieManager();
    cookieManager.setName("HTTP Cookie Manager");
    cookieManager.setProperty(TestElement.TEST_CLASS, CookieManager.class.getName());
    cookieManager.setProperty(TestElement.GUI_CLASS, CookiePanel.class.getName());
    
  2. Извлечение регулярных выражений

    RegexExtractor regexExtractor = new RegexExtractor();
    regexExtractor.setName("Regular Expression Extractor");
    regexExtractor.setProperty("RegexExtractor.useHeaders", "false");
    regexExtractor.setProperty("RegexExtractor.refname", "yourVariable");
    regexExtractor.setProperty("RegexExtractor.regex", "yourRegex");
    regexExtractor.setProperty("RegexExtractor.template", "yourTemplate");
    regexExtractor.setProperty("RegexExtractor.match_number", "yourMatchNumber");
    regexExtractor.setProperty("RegexExtractor.default", "yourDefaultValue");
    regexExtractor.setProperty(TestElement.TEST_CLASS, RegexExtractor.class.getName());
    regexExtractor.setProperty(TestElement.GUI_CLASS, RegexExtractorGui.class.getName());
    

Извлечение Пять способов запуска теста JMeter без использования графического интерфейса пользователя JMeter , чтобы узнать больше о различных вариантах запуска теста JMeter, включая программное создание плана тестирования.

...