Apache JMeter 4.0 HTTP2采样器文件上传失效及多文件请求方案咨询
Fixing Missing File Paths & Testing Different Payload Files with JMeter 4.0 HTTP2 Sampler
Got it, let's break down how to solve both the missing file path issue and test varying payload files with the HTTP2 sampler in JMeter 4.0. I’ve dealt with similar UI quirks in older JMeter versions, so these steps should get you sorted:
First: Fix the "File Path Disappears" Bug
The file path vanishing when switching samplers is likely a UI inconsistency in JMeter 4.0’s HTTP2 plugin. Here’s how to work around it:
- Parameterize file paths with User Defined Variables: Add a User Defined Variables element to your test plan, and define variables for each file path you need (e.g.,
FILE_SMALL=/path/to/small-file.txt,FILE_LARGE=/path/to/large-file.txt). Then in the HTTP2 sampler’s File Upload section, reference these variables like${FILE_SMALL}instead of typing the path directly. This keeps the value persistent even when switching between samplers. - Save your test plan frequently: JMeter sometimes drops unsaved UI changes when navigating between elements. Get into the habit of hitting
Ctrl+Safter updating sampler settings.
Second: Send Different Files as POST Payloads
Once the path persistence is fixed, here are three reliable ways to test different file sizes:
1. CSV Data Set Config (Best for Sequential Testing)
This is the simplest way to cycle through a list of files:
- Create a CSV file (e.g.,
file-paths.csv) with each line containing the absolute path to a test file:/home/user/tests/small-1MB.txt /home/user/tests/medium-10MB.txt /home/user/tests/large-100MB.txt - Add a CSV Data Set Config element to your thread group. Set:
- Filename: Absolute path to your
file-paths.csv - Variable Names:
CURRENT_FILE(or any name you prefer)
- Filename: Absolute path to your
- In the HTTP2 sampler’s File Upload section, set File Path to
${CURRENT_FILE}. Each test iteration will pick the next file from the CSV.
2. User Defined Variables + If Controller (For Controlled Iterations)
If you want to map specific files to specific iterations:
- Define all file paths in User Defined Variables (e.g.,
FILE_1,FILE_2,FILE_3). - Add a Counter element, set Start to 1, Increment to 1, Maximum to the number of files you have, and Reference Name to
FILE_INDEX. - Add an If Controller for each file, with conditions like
${__jexl3(${FILE_INDEX} == 1,)}. Inside each controller, configure the HTTP2 sampler to use the corresponding variable (e.g.,${FILE_1}).
3. Random Variable (For Randomized Testing)
If you want to randomly select files per iteration:
- Define your file paths in User Defined Variables (e.g.,
FILE_1,FILE_2,FILE_3). - Add a Random Variable element, set Minimum Value to 1, Maximum Value to 3, and Variable Name to
RANDOM_FILE_INDEX. - In the HTTP2 sampler’s File Path, use the expression
${__evalVar(FILE_${RANDOM_FILE_INDEX})}to dynamically pick a random file path each time.
Pro Tips
- Always use absolute file paths instead of relative paths to avoid issues with JMeter’s working directory.
- Ensure your HTTP2 plugin for JMeter 4.0 is the latest available version (check the JMeter Plugins Manager) — some path-persistence bugs were fixed in later plugin releases.
- Test with a single thread first to verify each file uploads successfully before scaling to load testing.
内容的提问来源于stack exchange,提问作者Sashika Wijesinghe
相关产品推荐
相关产品推荐

