有时,当您配置 HTTP(S) 监视或负载测试以检查您的网站或 API 性能时,您需要发送具有动态变化的有效负载的 HTTP 请求。 例如,您可能需要发送具有唯一产品 ID 的 JSON 才能将新产品添加到电子商务应用程序的数据库,或向 Web 服务器发送实际日期和时间等。 或者,假设您需要对有效载荷进行参数化以加载测试您的 API。

Dotcom-Monitor 支持 Razor 语法和数据掩码,允许用户为 Web 监控和负载测试目的配置动态更改和参数化的 HTTP 请求。

通常,动态有效载荷配置包括两个基本步骤:

  • 邮政数据(修补程序、放置)字段中指定具有动态参数(JSON、XML、文本、JavaScript、HTML)的主体 数据
  • “准备脚本” 字段中宣布解析方法。 如果不指定解析方法,系统将处理身体数据作为文本。

如果有必要对 HTTP 请求的主体数据进行参数化,则相应的上下文参数可以在 准备脚本 字段中或使用
“管理上下文参数”
选项中声明。

使用剃刀发动机

使用 Razor 发动机语法可以动态更改 HTTP 请求主体中传递的 JSON 数据或脚本内容。 在“ 发布数据” 字段中使用 Razor 语法时,请使用 @ 前缀将以下文本标记为 C# 代码元素(内联表达式、单语句块或多语句块)。 要了解有关剃刀语法的更多信息,请访问https://www.w3schools.com/asp/razor_syntax.asp。

如果在分析请求主体时在 Razor 语法中检测到任何错误,将生成错误并添加到测试执行报告中。

Dotcom-Monitor 支持剃刀模型(定义剃刀输入消息的结构),具有以下属性:

  • @Model.设备ID- 返回当前监控设备唯一标识符的变量。
  • @Model.TaskID- 返回当前监控任务唯一标识符的变量。
  • @Model.会话ID- 返回当前监控会话唯一标识符的变量。

您可以在 Razor 表情中使用上下文参数。 要在 Razor 表达式中引用上下文参数,请将引用方括号中的上下文参数 [] 包裹起来,并将其名称以 双引号“:

@Model["ContextParameterName"]

要通知系统请求主体中的数据需要由 Razor 引擎在准备脚本字段中解析,请添加”过程后数据由拉佐尔”(当前任务)方法。 否则,来自邮政数据的代码元素将被分析为文本。

例子

假设我们想在 HTTP 请求正文中发送设备 ID 和测试标记,那么我们需要按如下方式配置 Post Data 字段:

{ "Device": "@Model.DeviceID", "ContextTest": "@Model["Test"]" }

然后,我们需要在 准备脚本 字段中设置上下文参数值和解析方法:

context.Test = "Website Availability Monitoring";
ProcessPostDataByRazor(currentTask);

其中, currentTask 参数不依赖于任务名称,并且具有当前正在处理的任务类型。

在 HTTP 请求中使用数据掩码

您可以通过将参数名称引用在两侧的标记符号中来引用POST主体中的上下文参数。 因此,将这样输入上下文参数”GUID”的引用:

{"ContextGuid": "%%%Guid%%%"}

这里的百分比符号告诉系统,这是一个上下文参数参考,而不是字符串的一部分。

要通知系统请求主体中的数据需要通过指定的掩码进行解析,请在 准备脚本 字段中添加”过程后数据”(当前任务,”标记符号”)。 否则,上下文参数将被忽略并作为文本传递。 如上文所述,准备脚本字段将包含以下字符串:

ProcessPostDataByMask(currentTask, "%%%");

其中, currentTask 参数不依赖于任务名称,并且具有当前正在处理的任务类型。