我在Visual Studio 2012中进行了数据驱动的Web性能测试。我想在PreRequest()
或PostRequest()
插件中访问数据源中的值。通过{{DataSource1.PaymentAccounts#csv.USER_ID}}
等绑定,已经为表单发布参数访问了这些值。
我的最终目标是将值写入Web日志注释,以便更容易识别失败测试的数据源值。因此,值将传递给e.WebTest.AddCommentToResult(string.Format(...))
的调用。
答案 0 :(得分:2)
值存储在文本上下文中,因此只需使用WebTestRequestPlugin代码访问该值,例如:
object contextParameterObject;
if ( e.WebTest.Context.TryGetValue("DataSource1.PaymentAccounts#csv.USER_ID",
out contextParameterObject) ) {
string contextParameter = contextParameterObject.ToString();
e.WebTest.AddCommentToResult(contextParameter);
}
else {
throw new WebTestException("'DataSource1.PaymentAccounts#csv.USER_ID' not found");
}
默认情况下,上下文仅包含Web测试文件中显式使用的数据源的那些字段(列)。要使数据源中的所有字段可用,请将数据源文件的选择列属性设置为选择所有列。
答案 1 :(得分:2)
两个关键提示:
然后,除了trygetvalue(这是好的)你还应该只能写:
string currentRowFromDS = e.WebTest.Context["DataSource1.mycsvfile#csv.myDSColumnName"].ToString();
此行为与单元测试中的SQL数据源不同,例如,您只需分配变量。通常,用于向单元测试添加数据的API(Microsoft.VisualStudio.TestTools.UnitTesting)与用于向Web测试Microsoft.VisualStudio.TestTools.WebTesting添加数据的API略有不同。