Web测试将响应中的值用作下一个请求的参数

Rob*_*ben 8 c# asp.net testing asp.net-mvc visual-studio-2012

如何作为从当前请求接收的响应的一部分的字段/值作为下一个请求参数传递?

我只能设置静态表单POST参数.有没有办法在可用的UI中进行配置Web测试?

在此输入图像描述

我已经四处寻找,但这些似乎可以通过jMeter和其他网络测试框架实现.看到这些导致我放弃(现在)并在此期间开始探索编码Web测试方法.

任何建议/指针赞赏.

Poo*_*ven 7

我知道这是一个关于Visual Studio 2012的老问题,但是这可能有助于有人试图在Visual Studio 2015中实现这一点.可能有很多方法可以完成这项任务.这是我如何处理它:

  1. 对于登录Request,请设置提取规则:右键单击Request并选择Add Extraction Rule....这将允许您存储响应中的数据,以便在以后的请求中使用.有几种方法可以提取数据,例如从POST字段中提取数据.数据存储在一个命名变量中Context Parameter Name.我们假设您已将此设置为sessionid.
  2. 我已使用,将所有其他网址添加到原始请求Add Dependent Request.您可以通过用双花括号括起来在任何地方添加对上下文变量的访问:{{sessionid}}.


Rob*_*ben 5

经过一些挖掘之后,我才能够做到这一点。事实证明它非常简单(即使用编码测试)。

.
.
.
var request1 = new WebTestRequest("http://localhost/Home/Index");
var sessionId = "";
request1.ExtractValues += (s, e) => {
sessionId = 
  e.Response.HtmlDocument.HtmlTags.SingleOrDefault(tag => 
     tag.Name == "somename" 
     && tag.Attributes.Any(a => a.Name == "attrName" 
     && a.Value == "attrValue"));    
};

yield return request1;
Run Code Online (Sandbox Code Playgroud)

然后,

var request2 = new WebTestRequest("http://localhost/SomeController/Index/");
var request2Body = new FormPostHttpBody();
request2Body.FormPostParameters.Add("sessionId", sessionId);
request2.Body = request2Body;

yield return request2;
Run Code Online (Sandbox Code Playgroud)

如果有人知道更好的方法,请发布答案。