创建 JMeter 测试计划
让我们通过编写测试计划来了解正则表达式提取器(后处理器元素)中正则表达式的使用。此元素使用正则表达式从当前页面中提取文本,以识别所需元素符合的文本模式。
首先,我们编写一个 HTML 页面,其中包含人员及其电子邮件 ID 的列表。我们将它部署到我们的 tomcat 服务器。html (index.html) 的内容如下 -
<html>
<head>
</head>
<body>
<table style = "border: 1px solid #000000;">
<th style = "border: 1px solid #000000;">ID</th>
<th style = "border: 1px solid #000000;">name</th>
<th style = "border: 1px solid #000000;">Email</th>
<tr>
<td id = "ID" style = "border: 1px solid #000000;">3</td>
<td id = "Name" style = "border: 1px solid #000000;">Manisha</td>
<td id = "Email" style = "border: 1px solid #000000;">manisha@domain.com</td>
</tr>
<tr>
<td id = "ID" style = "border: 1px solid #000000;">4</td>
<td id = "Name" style = "border: 1px solid #000000;">joe</td>
<td id = "Email" style = "border: 1px solid #000000;">joe@domain.com</td>
</tr>
</table>
</body>
</html>
在 tomcat 服务器上部署它时,此页面将如下面的屏幕截图所示 -
在我们的测试计划中,我们将在上面的人员列表页面中看到的人员表的第一行中选择人员。要捕获此人的 ID,让我们首先确定在第二行中找到此人的模式。
如下图所示,第二个人的ID被<td id = "ID">和</td>包围,是具有这种模式的第二行数据。我们可以使用它来匹配我们想要从中提取信息的确切模式。由于我们要从该页面中提取两条信息,人员 ID 和人员姓名,因此字段定义如下 -
启动JMeter,添加一个线程组 Test Plan → Add→ Threads(Users)→ Thread Group.
接下来添加一个sampler HTTP Request,选择测试计划,右键 Add → Sampler → HTTP Request 并输入如下所示的详细信息 -
接下来,添加一个正则表达式提取器。选择 HTTP Request Sampler (Manage),右击Add → Post Processor → Regular Expression Extractor.
下表提供了上述屏幕截图中使用的字段的描述 -
序号 |
字段和描述 |
1 |
Reference Name
将存储提取的测试的变量的名称 (refname)。
|
2 |
Regular Expression
要提取的文本将与之匹配的模式。将提取的文本组由字符 '(' 和 ')' 括起来。我们使用 '.+?' 指示由 <td..>..</td> 标记包围的文本的单个实例。在我们的例子中,表达式是 - <td id = "ID">(+?)</td>\s*<td id = "Name">(+?)</td>\s*
|
3 |
Template
每组提取的文本作为变量 Person 的成员放置,遵循由“(”和“)”括起来的每组模式的顺序。每个组都存储为 refname_g#,其中 refname 是您输入的作为引用名称的字符串,# 是组号。$1$ to 指的是组 1,$2$ to 指的是组 2,等等。 $0$ 指的是整个表达式匹配的任何内容。在这个例子中,我们提取的 ID 保存在 Person_g1 中,而 Name 值保存在 Person_g2 中。
|
4 |
Match No.
由于我们计划仅提取此模式的第二次出现,匹配第二个志愿者,因此我们使用值 2。值 0 将进行随机匹配,而 ForEach 控制器需要使用负值。
|
5 |
Default
如果未找到该项目,这将是默认值。这是个可选的选项。您可以将其留空。
|
添加侦听器以捕获此测试计划的结果。右键单击线程组并选择添加 → 侦听器 → 查看结果树选项以添加侦听器。
将测试计划保存为reg_express_test.jmx并运行测试。输出将是成功的,如下面的屏幕截图所示 -