2017-01-12 2 views
1

Ich füge benutzerdefinierte Header zu HTTPSampler programmatisch beim Einrichten von JMeter Testplan.JMeter - Hinzufügen benutzerdefinierter HTTP-Header programmatisch in HTTPSampler

Siehe unten Snippet für das gleiche:

HeaderManager headerManager = new HeaderManager(); 
headerManager.add(new Header("Foo", "Joe")); 
sampler.setHeaderManager(headerManager);` 

Das Problem hierbei ist, dass diese benutzerdefinierten Header wird nicht an den Server gesendet werden.

Gibt es etwas, das ich hier vermisse?

Antwort

0

Es funktioniert nicht auf diese Weise, Sie müssen Ihren Code ändern, um HeaderManager HashTree zu HTTPSamplerProxy HashTree hinzuzufügen. Danach müssen Sie wie folgt HTTPSamplerProxy Thread-Gruppe, etwas hinzufügen:

HashTree httpRequestTree = new HashTree(); 
httpRequestTree.add(httpRequest, manager); 

testPlanTree.add(testPlan); 
HashTree threadGroupHashTree = testPlanTree.add(testPlan, threadGroup); 
threadGroupHashTree.add(httpRequestTree); 

Voll Code, nur für den Fall:

// JMeter Test Plan, basically JOrphan HashTree 
HashTree testPlanTree = new HashTree(); 

// Create Header Manager 
HeaderManager manager = new HeaderManager(); 
manager.add(new Header("Foo", "Joe")); 
manager.setName(JMeterUtils.getResString("header_manager_title")); // $NON-NLS-1$ 
manager.setProperty(TestElement.TEST_CLASS, HeaderManager.class.getName()); 
manager.setProperty(TestElement.GUI_CLASS, HeaderPanel.class.getName()); 

// HTTP Sampler - open example.com 
HTTPSamplerProxy httpRequest = new HTTPSamplerProxy(); 
httpRequest.setDomain("example.com"); 
httpRequest.setPort(80); 
httpRequest.setPath("/"); 
httpRequest.setMethod("GET"); 
httpRequest.setName("Open example.com"); 
httpRequest.setProperty(TestElement.TEST_CLASS, HTTPSamplerProxy.class.getName()); 
httpRequest.setProperty(TestElement.GUI_CLASS, HttpTestSampleGui.class.getName()); 


// Loop Controller 
LoopController 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(); 

// Thread Group 
ThreadGroup threadGroup = new ThreadGroup(); 
threadGroup.setName("Example Thread Group"); 
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()); 

// Test Plan 
TestPlan testPlan = new TestPlan("Create JMeter Script From Java Code"); 
testPlan.setProperty(TestElement.TEST_CLASS, TestPlan.class.getName()); 
testPlan.setProperty(TestElement.GUI_CLASS, TestPlanGui.class.getName()); 
testPlan.setUserDefinedVariables((Arguments) new ArgumentsPanel().createTestElement()); 

// HTTP Request Sampler and Header Manager 
HashTree httpRequestTree = new HashTree(); 
httpRequestTree.add(httpRequest, manager); 

// Construct Test Plan from previously initialized elements 
testPlanTree.add(testPlan); 
HashTree threadGroupHashTree = testPlanTree.add(testPlan, threadGroup); 
threadGroupHashTree.add(httpRequestTree); 

Check out Five Ways To Launch a JMeter Test without Using the JMeter GUI für weitere Informationen über den Aufbau JMeter Testplan programmatisch.

Verwandte Themen