2014-10-10 3 views
4

Я создал собственное правило извлечения, а свойство мне нужно, чтобы свойства были управляемыми данными. I.e. Я хочу подключить источник данных (файл CSV). как мне это сделать?Как настроить персонализированные данные правила извлечения данных?

Подписок являются снимки экрана и фрагменты кода, которые описывает проблему

Фрагмент кода для пользовательского класса правил извлечения

public class CustomeExtractionClass : ExtractionRule 
{ 
    public string Name 
    { 
     get; 
     set; 
    } 

    public override void Extract(object sender, ExtractionEventArgs e) 
    { 
      // Code to extract text/values from Response Based On NAME(i.e. Property) value 
      received from UI 
    } 
} 

UI для имени свойства

Примечание: Textbox рядом Наименование имущества

enter image description here

Как это сделать Данные управляются? так же, как тот, который мы получаем при вставке параметров FormPost ... вот пример

enter image description here

Примечание кнопки выпадающей в правом нижнем угле, который тянет присоединенные источники данных ... Я хочу, чтобы значения Свойства Имени быть прикрепленный к тому же источнику данных .... как я об этом? ???

ответ

3

Наконец, проведя много часов я был в состоянии получить значения из CSV-файла в моей настраиваемого правила добычи. Я не мог привязать столбец CSV к правилу правила извлечения, однако я получил работу. вот что я пропускал

[DataBinding("DataSource1", "mycsvfile#csv", "ProcessInstanceID", "MyProcessInstanceID")] 

вот шаги, чтобы достигнуть его

Шаг 1: Добавление источника данных в WebTest (Пропустить, если уже добавлено)

Шаг 2: Генерация кода из WebTest (Пропустить, если это уже сделано)

Шаг 3: Свяжите источник данных (например, CSV-файл), добавив следующие строки кода чуть выше объявления вашего класса веб-сайтов.

[DataSource("DataSource1", "Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\customextractionrule\\mycsvfile.csv", Microsoft.VisualStudio.TestTools.WebTesting.DataBindingAccessMethod.Sequential, Microsoft.VisualStudio.TestTools.WebTesting.DataBindingSelectColumns.SelectOnlyBoundColumns, "mycsvfile#csv")] 
[DataBinding("DataSource1", "mycsvfile#csv", "ProcessInstanceID", "MyProcessInstanceID")] 
public class WebTest2Coded : WebTest 
{ 

Примечание: в коде выше «MyProcessInstanceID» это имя параметра контекста, который будет создан с помощью визуального студии и значение столбца файла CSV будет присвоен этот параметр контекста. вы можете указать любое имя.

Шаг 4: Доступ к значению параметра контекста в пользовательском правиле экстракционной

public override void Extract(object sender, ExtractionEventArgs e) 
    { 
     string ProcessIDinCSvFile = e.WebTest.Context["MyProcessInstanceID"].ToString()); 
+0

Можете ли вы прояснить: управляются ли данные веб-теста? Или, вы пытаетесь использовать привод данных только для правила извлечения. Документация Microsoft, которую я нашел для DataBindingAttribute, предполагает, что это внутренний класс, используемый для создания тестов, а не для обычного кода. Где и как вы узнали об использовании этого атрибута? – AdrianHHH

+2

@Adrian: Да, веб-тест управляется данными. также есть другие столбцы, которые мне нужно использовать для правила извлечения. Я часами нашел информацию о MSDN Kb Article также попробовал много перестановок и комбинаций, а также все методы и свойства ExtractionEventArgs, но это было бесполезно. Наконец, я нашел его, когда я сгенерировал код из своего веб-теста. Я добавил атрибут DataBinding, и я нажал Home run .... –

+0

@AdrianHHH: Согласно вашему предложению, я создал новый вопрос. Не могли бы вы помочь, вот ссылка на вопрос: http://stackoverflow.com/questions/29605846/can-visual-studio-2012-load-testing-capture-performance-counters-of-linux-server –

0

Чтобы задать параметр контекста для текста в поле, просто введите полное имя поля источника данных, заключенного в удвоенные фигурные скобки в поле. Правильная форма текста показана красным на изображении в вопросе, а именно {{DataSource1.mycsvfile#csv.ProcessInstanceID}}.

Источник данных поля также могут быть доступны непосредственно из контекста с помощью кода, такие как

string theText = e.WebTest.Context["DataSource1.mycsvfile#csv.ProcessInstanceID"].ToString(); 

Если Name поле правила экстракции устанавливается на имя параметра контента (т.е. не с его значением) то текущее значение может быть считана и новое значение вставляется с кодом, как

string theText = e.WebTest.Context[Name].ToString(); 
e.WebTest.Context[Name] = "The new string"; 
+2

Спасибо за ответ .... как всегда предложенное решение не работает. Я попытался добавить поле источника данных в свойство Name, используя «{{DataSource1.mycsvfile # csv.ProcessInstanceID}}», и это работает для меня. также попытался добавить параметр контекста в webtest и попытался привязать значение параметра context к полю datasource, выполнив «{{DataSource1.mycsvfile # csv.ProcessInstanceID}}», но этот результат также работает. Кажется, что параметр Context и свойство Name для правила извлечения принимают только строковые значения. –

+0

Я нашел вас вопросом не очень ясно, поэтому написал разумный ответ. Комментарий, говорящий «*, который работает для меня», также очень расплывчато. Что случилось и что вы ожидали? Я считаю, что добавление вызовов 'e.WebTest.AddCommentToResult (...)' может быть очень полезно для понимания происходящего. – AdrianHHH

+2

Что я имел в виду, когда я использую «{{DataSource1.mycsvfile # csv.ProcessInstanceID}}« Я не получаю значения в CSV-файле .... Я ожидал, что значение будет возвращено, что-то вроде «Abc1234» ... но значение во время выполнения «{{DataSource1.mycsvfile # csv.ProcessInstanceID}}» .. Вот еще описание ... Я хочу, чтобы свойство Name пользовательского правила извлечения было привязанным к данным ... –

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