C# 如何在web测试插件中调用MoveDataTableCursor来遍历表中的有限行集?
我很难理解web测试数据源的访问方法“不自动移动光标”是如何工作的。而这些文件似乎还远远不够详尽 首先,假设有一个简单的web测试,只有一个请求。它使用一个名为DS的数据源和一个名为StepList的表,该表包含5行 表的访问方法设置为“不自动移动光标”,当前测试设置在web测试属性中启用了“每个数据源行运行一次”。web测试不是负载测试的一部分 在这些条件下,测试每行运行5次,因此它基本上会自动移动光标。这是有意的吗 现在,谈谈实际问题,这是本文的主题 我上面的StepList表有一个标识列和一个StepId列。所讨论的web测试实际上是从另一个web测试调用的,它应该只对在测试上下文中设置了StepId的表行运行C# 如何在web测试插件中调用MoveDataTableCursor来遍历表中的有限行集?,c#,visual-studio-2010,.net-4.0,webtest,C#,Visual Studio 2010,.net 4.0,Webtest,我很难理解web测试数据源的访问方法“不自动移动光标”是如何工作的。而这些文件似乎还远远不够详尽 首先,假设有一个简单的web测试,只有一个请求。它使用一个名为DS的数据源和一个名为StepList的表,该表包含5行 表的访问方法设置为“不自动移动光标”,当前测试设置在web测试属性中启用了“每个数据源行运行一次”。web测试不是负载测试的一部分 在这些条件下,测试每行运行5次,因此它基本上会自动移动光标。这是有意的吗 现在,谈谈实际问题,这是本文的主题 我上面的StepList表有一个标识列和
Id StepId
1 1
2 1
3 2
4 2
5 2
为了实现这一点,我遵循的指导原则编写了一个web测试插件,其PreWebTest方法如下所示:
public override void PreWebTest(object sender, PreWebTestEventArgs e)
{
string stepId = string.Empty;
if (e.WebTest.Context.ContainsKey(ContextParameterName))
{
stepId = e.WebTest.Context[ContextParameterName].ToString();
}
while (e.WebTest.Context["DS.StepList.StepId"].ToString() != stepId)
{
e.WebTest.MoveDataTableCursor("DS", "StepList");
}
}
只有当stepId的值为“2”时,上述代码才能在示例表上正常工作。如果是“1”,则MoveDataTableCursor抛出WebTestEndOfDataException异常:“AccessMethod唯一的数据源表中不再有数据行”
我尝试捕获异常并停止web测试,但这不起作用,因为测试似乎永远不会结束。回答第一个问题:“不自动移动光标”设置仅适用于负载测试中的运行,这就是为什么在使用设置“每个数据源行运行一次”的web测试期间,光标仍会自动移动的原因。当然,后一种设置仅适用于web测试运行 获取WebTestEndOfDataException的原因是: