
В этом посте мы узнаем, что такое Data Driven тестирование и рассмотрим, как запустить наш тест основанный на внешних данных. Также мы узнаем, как запускать тест итерациями, которые базируются на наборе данных.
Проблема
Нужно протестировать данные, которые хранятся в каком-то внешнем месте.
Нужно запустить один и тот же тест для разных тестовых данных (итерации).
Решение
Data Driven тестирование позволяет указать любой (или почти любой) источник данных, (например, база данных, Excel, XML и т.д.) и запускать наши тест кейсы, основанные на динамической/хранимой информации.
Также мы можем указать набор данных. Давайте представим, что у нас есть метод Sum()
, который суммирует два числа. Мы можем определить источник данных, который содержит несколько комбинаций таких чисел, а затем запустить тест, и он будет выполнен для каждого варианта входных данных.
Как это работает?
Атрибут DataSource
указывает где и как брать информацию с которой требуется работать.
Из примера ниже видно, что он будет работать с XML файлом (numbers.xml), который включен как часть теста (атрибут DeploymentItem
применяется для того, чтобы убедиться, что этот ресурс будет доступен в выходном результате теста).
[TestMethod] [DeploymentItem("numbers.xml")] [DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\numbers.xml", "StyleInfo", DataAccessMethod.Sequential)] public void Sum() { double num1 = (double)TestContext.DataRow["NumberOne"]; double num2 = (double)TestContext.DataRow["NumberTwo"]; double result = num1 + num2; Assert.IsNotNull(result); }
Допустим, вы имеете следующий XML:
<?xml version="1.0" encoding="utf-8"?> <ArrayOfNumbers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Numbers> <NumberOne>1</NumberOne> <NumberTwo>2</NumberTwo> </Numbers> <Numbers> <NumberOne>2.1</NumberOne> <NumberTwo>3.9</NumberTwo> </Numbers> <Numbers> <NumberOne>-29</NumberOne> <NumberTwo>21</NumberTwo> </Numbers> </ArrayOfNumbers>
Теперь, если вы запустите тест и все пройдет удачно, то вы увидите, что тест прошел успешно.
Дальше можно сделать двойное нажатие на этом результате, и это покажет вам детали для каждой строки данных DataRow
(каждая отдельная строка данных будет обрабатываться как отдельный юнит тест).
Наслаждайтесь!
Источник: тут.