在使用变量时使用 RobotFramework 和 Curl 响应

Working with RobotFramework and Curl responses while using Variables

我正在尝试使用良性 url 和网络钓鱼 url 测试网关。 我正在使用 SSHLibrary 连接到一台机器,curl URL 然后检查“应该包含”是否输出包含页面标题或连接被重置。

测试良性 URL 时,它有效。 curl 命令的输出如下所示 - curl 良性输出 url:

我使用${variable} = execute command curl url 然后 应包含 ${variable} 提交

而且有效。

当我测试网络钓鱼 URL 时,变量不包含任何输出,因为连接已被网关重置。

当我 运行 带有网络钓鱼 URL 的 curl 命令时,我得到 -

curl: (56) Recv failure: Connection was reset

当我使用 should contain with ${variable} Connection was reset 时,它不起作用。 我也试过 ${variable.stdout} 但变量每次都是空的。

如何处理连接已重置响应并验证它确实已重置?

问题出在 curl 命令上的流 return。

虽然 stdout 没有信息,但 stderr 有关于“连接已重置”的信息。

即使我将 return_stderr=True 添加到“执行命令”,它也不起作用。

“执行命令”关键字有多个 return 选项,标准输出默认启用。

当同时使用 stdout 和 stderr 时,我的变量变成了一个列表,“应该包含”关键字只检查了列表 [0] 的第一条记录。 如果我们想使用一个变量或使用多个变量,解决方案是禁用默认的标准输出并启用标准错误。

${variable} = 执行命令 curl -v example.com return_stdout=False return_stderr=True

${stdout} ${stderr} ${rc} = 执行命令 curl -v example.com return_stderr=True return_rc=True