SpecFlow - Как использовать тесты, управляемые данными, такие как свойство NUnits TestCaseSource?

I'm a QA who decided to use SpecFlow for my test automation after some consideration. I think it's brilliant, but missing one feature which I did use often with other test runners such as NUnit - something similar to the TestCaseSource property from NUnit to specify a potentially dynamic set of data for tests to be ran against at run time.

У меня часто были разные данные в каждой среде, в которой должен выполняться тест, поэтому не могут указывать жестко заданные значения для параметров теста. Тривиальный пример - проверка того, что каждый тип учетной записи пользователя может войти в систему, учетные данные учетной записи пользователя можно получить с помощью запроса БД для динамического заполнения каждого тестового примера в NUnit:

public List GetTestData()
{
    List testData = new List();
    testData = MyDatabase.GetAllUsersInfo().ToList();

    return testData;
}

[Test, TestCaseSource("GetTestData")]
public void CallLoginService(User user)
{
    var response = LoginController.TryLogin(User.UserName, User.Password);

    if (response.Error != null)
    {
        Assert.Fail("Failed to Login: {0}", response.Error);
    }

    Assert.AreEqual("Logged in ok", response.Message, "Login message not as expected");
}

Очевидно, что это простой пример этой функции, но я думаю, что она описывает ее достаточно хорошо. Я знаю, что у нас есть способность в SpecFlow использовать схему сценария и таблицу входных данных тестового запуска, но это все еще статично, поэтому не соответствует счету.

Я искал какое-то время и ничего не нашел в SpecFlow, знает ли кто-нибудь что-либо подобное выше, которое может быть использовано (или планируется, если кто-нибудь, кто работает над проектом, читает это)?

Благодаря :)

1
nl ja de

1 ответы

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

Когда он сохраняется в Visual Studio, он разбирается и преобразуется в файл feature.cs, и это тот, который скомпилирован и используется для тестирования.

Таким образом, ваш процесс станет

  • изменить источник данных
  • экспорт в файл свойств
  • получить плагин VS для плагина для преобразования в feature.cs
  • запустить msbuild
  • запускать тесты через Nunit или аналогичные

Я бы этого не сделал. Вместо этого я бы сосредоточился на том, чтобы мои тесты были лучшими примерами. Похоже, вы пытаетесь изо всех сил покрывать все возможности. Не придумывайте примеры, чтобы охватить все возможные случаи, но вместо этого используйте как можно больше логики с меньшим количеством тестов.

1
добавлено
Да, я знаю, что на данный момент кажется, что каждый случай передается обратно в файл feature.cs, и это становится статическим определением теста. Вы правы во втором абзаце, и моя стратегия в целом заключается в использовании хороших примеров и правильной настройке тестовых данных. Этот конкретный тест, который я пытаюсь сделать, немного отличается тем, что это тест интеграции с клиентами, чтобы убедиться, что базовый счастливый путь заканчивается для каждого клиента, так как моя система содержит много конфигов, которые могут меняться, и нам нужно уверенность в том, что общий базовый поток данных для каждого клиента всегда работает.
добавлено автор chrisc, источник
Я полагаю, что другая проблема заключается в том, что не все тестовые ролики, которые могут использовать SpecFlow, имеют то, что работает так же, как и TestCaseSource от NUnit, поэтому его даже невозможно включить. Я могу понять, как это можно сделать, если SpecFlow работает только с бегунами NUnit, но учитывая, что он должен поддерживать других, которые могут быть причиной отсутствия этой функции.
добавлено автор chrisc, источник
QA — вакансии и аналитика рынка вакансий
QA — вакансии и аналитика рынка вакансий
5 668 участник(ов)

Вакансии и поиск работы в сфере QA. Вопросы: @qa_ru Про деньги: @qa_fin При размещении вакансии указывать: - должность - компанию - требования к кандидату - условия и ЗП хэштеги: #город #типзанятости

QA — русскоговорящее сообщество
QA — русскоговорящее сообщество
3 625 участник(ов)

Общаемся про все виды тестирования и его автоматизацию. Без мата, грубостей и провокаций. События: @qaevents Вакансии: @qa_jobs Автоматизаторы: @qa_automation Слухи про компании: @qa_bad_company

QA juniors
QA juniors
2 720 участник(ов)

Добро пожаловать в чат джуниоров QA! Общаемся обо всём, что связано с тестированием и не только :) В чате царит дружественная атмосфера, поэтому общаемся без мата, грубостей. @qa_automation - автоматизация @serious_tester - для тестировщиков и QA

QA - Bad Company!
QA - Bad Company!
2 602 участник(ов)

Позитив и негатив про компании или курсы, куда не стоит идти работать или учиться, а куда стоит. За пиратский контент - бан. @qa_fin о деньгах Русскоговорящее сообщество: @qa_ru Флудилка: @qaFlood Вакансии: @qa_jobs Финансы: @qa_fin

QA — Автоматизация
QA — Автоматизация
2 434 участник(ов)

1. Обсуждение технологий автоматизированного тестирования 2. Помощь начинающим Ru-сообщество: @qa_ru Джуночат: @qajuniors Вакансии: @qa_jobs Финансы: @qa_fin Митапы и события: @qaevents Паблики: @serious_tester, @automation_remarks, @atinfo

QA - Finance
QA - Finance
1 347 участник(ов)

Чат о деньгах тестировщиков. ЗП, релокейты,оферы. @qa_bad_company - обсуждение компаний/курсов и карьерного роста для QA @qa_automation - авто QA Холивары, политика, религия-бан Реклама, спам, оскорбления - бан Для флуда используйте другой чат