Я QA, который после некоторого размышления решил использовать SpecFlow для автоматизации тестирования. Я думаю, что это великолепно, но отсутствует одна функция, которую я часто использовал с другими программами для выполнения тестов, такими как NUnit - что-то похожее на TestCaseSource из NUnit, чтобы указать потенциально динамический набор данных для тестов, которые будут выполняться во время выполнения.
У меня часто бывают разные данные в каждой среде, в которой должен выполняться тест, поэтому я не могу указать жестко запрограммированные значения для параметров теста. Тривиальный пример - проверка того, что каждый тип учетной записи пользователя может войти в систему, учетные данные учетной записи пользователя могут быть получены с помощью запроса БД для динамического заполнения каждого тестового примера в NUnit:
public List<User> GetTestData()
{
List<User> testData = new List<User>();
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 ничего подобного, знает ли кто-нибудь что-нибудь похожее на приведенное выше, которое можно использовать (или запланировать, если это прочитает кто-нибудь, кто работает над проектом)?
Спасибо :)