2017-02-14 17 views
0

Я создал WebTest и есть источник данных CSV, который содержит столбец со списком коротких сроков (ММ/ДД/ГГГГ)WebTest - Использование дат в контексте Параметры

мне нужно управлять параметром из-за в часть веб-странице, я тестирую имеет параметр формы, который нужен ему быть отформатирован как YYyyMmDd

Когда дата, захватываются из источника данных (например: 02/12/2016), я заметил, на вкладке «Контекст» моего тестового прогона, чтобы формат «2/12/2016 12:00:00 AM»

Я создал плагин Request и добавил Следующий код:

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")); 

} 

Это создает Строки не был признан действительной ошибкой DateTime. Я попытался изменить формат на MM/dd/yyyy, но я столкнулся с той же ошибкой.

Кто-нибудь знает, как правильно использовать формат DateTime?

ответ

0

Дата, указанная в контексте, равна 2/12/2016 12:00:00 AM. У этого есть только одна цифра за месяц, тогда как спецификатор формата имеет MM, который хочет две цифры. Дата также содержит буквы AM, которые не соответствуют формату.

Изменение формата должно быть M/dd/yyyy HH:mm:ss соответствует дате 2/12/2016 12:00:00, но не соответствует AM. Теоретически спецификатор формата tt должен соответствовать этому, но для меня это не сработало.

Вместо использования ParseExact вы можете использовать Parse, и он будет работать в правильном формате. Используя следующий работало на даты и время строки при условии:

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

CultureInfo необходим, поскольку дата ввода имеет месяц и дни неправильный путь вокруг.

Однако реальная проблема заключается в том, как файлы CSV обрабатываются веб-тестом. Кажется, что они читают их, используя ту же логику, что использует Microsoft Excel при чтении CSV. А именно, если это похоже на дату, то конвертируйте ее в дату. Поэтому любая строка, соответствующая dd/dd/dddd (где d - это цифра), может быть соединена с датой. (Например, 15/15/2017 не будет преобразован, потому что 15 не является номером месяца.) Я рекомендую переписать CSV для форматирования даты ввода по-разному, использовать то, что Excel не будет рассматривать как дату. Один из вариантов заключается в том, чтобы иметь дату в трех столбцах CSV, так что у вас есть явный day, месяц and год columns. Another option is to add non-date characters to the string and format it correctly, eg as z20160212 and then remove the z within the web test. Generally, I would advise to avoid the conversion of string to DateTime` то другое преобразование в другую строку.

+0

DateTime.Parse оказался лучшим вариантом для меня. Мне кажется, что переписывание CSV предполагает касание каждой из дат, потому что она снабжена форматом, установленным на короткую дату. Изменение формата преобразует ячейки столбца в 5-значное число. Цените помощь! – bigspank

 Смежные вопросы

  • Нет связанных вопросов^_^