【问题标题】:Webtest - Using Dates as Context ParametersWebtest - 使用日期作为上下文参数
【发布时间】:2017-07-02 06:42:13
【问题描述】:

我创建了一个 webtest 并有一个 CSV 数据源,其中包含一个包含短日期列表 (MM/dd/yyyy) 的列

由于我正在测试的部分网页有一个表单参数需要将其格式化为 yyyyMMdd

,因此我需要操作该参数

当从数据源捕获的日期(例如:02/12/2016)时,我注意到在我的测试运行的上下文选项卡中,格式为“2/12/2016 12:00:00 AM”

我创建了一个请求插件并添加了以下代码:

public override void PreRequest(object sender, PreRequestEventArgs e)
{
   base.PreRequest(sender e)

   string CSVDate = e.WebTest.Context["<datasource date column>"].ToString();
   DateTime dt = DateTime.ParseExact(CSVDate, "MM/dd/yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
   e.WebTest.Context.Add("NewDate", dt.ToString("yyyyMMdd"));

}

这会生成 String was not known as a valid DateTime 错误。我尝试将格式更改为 MM/dd/yyyy,但遇到了同样的错误。

有人知道我应该如何使用正确的 DateTime 格式吗?

【问题讨论】:

    标签: c# datetime load-testing web-performance


    【解决方案1】:

    上下文中显示的日期时间是2/12/2016 12:00:00 AM。这个月份只有一位数字,而格式说明符有MM,它需要两位数。日期时间还包含格式不匹配的字母AM

    将格式修改为M/dd/yyyy HH:mm:ss 匹配日期时间2/12/2016 12:00:00,但不匹配AM 部分。从理论上讲,tt 格式说明符应该与此匹配,但它对我不起作用。

    您可以使用Parse 而不是使用ParseExact,它的格式正确。使用以下方法处理提供的日期时间字符串:

    DateTime dt1 = DateTime.Parse(CSVDate, new System.Globalization.CultureInfo("en-US"));
    

    CultureInfo 是必需的,因为输入日期的月份和日期是错误的。

    但是,真正的问题在于 Web 测试处理 CSV 文件的方式。它似乎使用与 Microsoft Excel 在读取 CSV 时使用的相同逻辑来读取它们。也就是说,如果它看起来像一个日期,则将其转换为日期。因此,任何匹配dd/dd/dddd(其中d 是数字)的字符串都可能被转换为日期。 (例如,15/15/2017 不会被转换,因为 15 不是月份数字。)我建议重写 CSV 以不同方式格式化输入日期,使用 Excel 不会将其视为日期的东西。一种选择是将日期放在 CSV 的三列中,因此有明确的 day,monthandyearcolumns. Another option is to add non-date characters to the string and format it correctly, eg asz20160212and then remove thezand then remove thezwithin the web test. Generally, I would advise to avoid the conversion of string toDateTime` 然后再转换为不同的字符串。

    【讨论】:

    • DateTime.Parse 最终成为我使用的更好选择。在我看来,重写 CSV 将涉及触摸每个日期,因为它提供的格式设置为短日期。更改格式会将列单元格转换为 5 位数字。感谢您的帮助!
    猜你喜欢
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多