Тестирование на основе данных с помощью NUnit
Нужен совет по автоматизации тестирования данных на основе.
Я делаю автоматизацию тестирования с использованием C# ann Nunits для веб-приложения, разработанного с использованием MVC. Для этого мы используем веб-драйверы Selenium.
В рамках тестирования, управляемого данными, полезно использовать его для входных тестовых данных, это xml файлы или база данных sql server.
Если мы используем db, хорошо ли иметь какой-нибудь ORM(NHibernate) для подключения к db.
Спасибо
4 ответа
управляемых данными испытаний в-NUnit-с-CSV
Параметризованные тесты в NUnit
Как пользоваться
[Test, TestCaseSource("GetTestData")]
public void MyExample_Test(int data1, int data2, int expectedOutput)
{
var methodOutput = MethodUnderTest(data2, data1);
Assert.AreEqual(expectedOutput, methodOutput, string.Format("Method failed for data1: {0}, data2: {1}", data1, data2));
}
private IEnumerable<int[]> GetTestData()
{
while (data.ReadNext()) // Use your custom logic based on Stream to get new data (basically Implement IEnumerator on data class)
yield return new[] { data.Current };
}
Попробуйте использовать Mockobjects для моделирования данных, попробуйте следующие ссылки:
Посмотрите, что подходит для вашего счета.
Если у вас есть хороший ORM, и вам это удобно, используйте его.
Если вам удобнее с XML - делайте это.
Подумайте о длительном времени работы, когда это становится проблемой. Вы не пишете модульные тесты с Selenium, вы пишете интеграционные тесты пользовательского интерфейса. Поэтому они, как правило, бегают ночью, поэтому длительное время работы редко становится проблемой.
Лично здесь мы используем LINQ2SQL и для любых данных, которые я перенаправляю в базу данных SQL-сервера, и она работает нормально - при условии, что ваши запросы не глупы, прирост производительности незначителен.
Мое предложение состояло бы в том, чтобы объединить данные испытаний в сам прибор модульного тестирования. Настройка каждого метода тестирования будет устанавливать начальное состояние (данные) для теста; и демонтаж очистит его (при необходимости).
Попытка сохранить внешний файл данных и привести его в соответствие с кодом модульного теста вызывает проблемы. (YMMV - это мой совет из личного опыта.)
Рассмотрите возможность хранения тестовых данных во встроенных файлах json вместо excel или базы данных.
Хранение в JSON будет иметь следующие преимущества.
- Нет препятствий в тестовом коде из-за схемы
- Нет проблем с подключением
- Тестовые данные будут доступны как часть вашего проекта
Это обеспечивает хорошую поддержку для управления вашими тестовыми данными во встроенных файлах json.