NAnt, MbUnit, CruiseControl, Selenium - передача настроек в тестовую сборку
-
04-07-2019 - |
Вопрос
Я собираю некоторые идеи для нашей автоматизированной платформы тестирования и ищу Selenium для тестировщика.
Я обертываю записанные сценарии Selenium C # в тесте MbUnit, который запускается с помощью задачи MbUnit NAnt. Тестовый клиент Selenium создается следующим образом:
selenium = new DefaultSelenium("host", 4444, "*iexplore", "http://[url]/");
Как я могу передать настройки хоста, порта и URL-адреса в тест, чтобы их значения можно было контролировать с помощью задачи NAnt?
Например, у меня может быть прослушивание нескольких серверов Selenium RC, и я хочу использовать один и тот же тестовый код, передаваемый на каждый адрес сервера, вместо встраивания настроек в сами тесты.
У меня есть подход, смоделированный с использованием пользовательской задачи NAnt, которую я написал, но в настоящее время это не самое элегантное решение, и я подумал, есть ли более простой способ выполнить то, что я хочу сделать.
Большое спасибо, если кто-нибудь может помочь.
Решение
Спасибо за ответы.
Переменные среды могут работать, однако мы можем запускать параллельные тесты через одну сборку тестов, поэтому я не хочу, чтобы настройки перезаписывались во время выполнения, что могло бы нарушить другой тест. Интересная мысль, хотя, спасибо, я считаю, что я мог бы использовать это в других областях.
Мое текущее решение включает сборку пользовательских задач NAnt поверх задачи MbUnit, которая позволяет мне указывать в качестве атрибутов дополнительные параметры хоста, порта, URL-адреса. Затем они сохраняются в виде файла конфигурации в каталоге сборки, а затем считываются тестовыми сборками. Это чувствует себя немного "неуклюжим" мне как мои тесты нужно наследовать от конкретного класса. Не так уж плохо, но я бы хотел иметь меньше зависимостей и сосредоточиться на тестировании.
Может быть, я слишком волнуюсь !!
Другие советы
У меня есть базовый класс для всех тестовых приборов, который имеет следующий код установки:
[FixtureSetUp]
public virtual void TestFixtureSetup ()
{
BrowserType = (BrowserType) Enum.Parse (typeof (BrowserType),
System.Configuration.ConfigurationManager.AppSettings["BrowserType"],
true);
testMachine = System.Configuration.ConfigurationManager.AppSettings["TestMachine"];
seleniumPort = int.Parse (System.Configuration.ConfigurationManager.AppSettings["SeleniumPort"],
System.Globalization.CultureInfo.InvariantCulture);
seleniumSpeed = System.Configuration.ConfigurationManager.AppSettings["SeleniumSpeed"];
browserUrl = System.Configuration.ConfigurationManager.AppSettings["BrowserUrl"];
targetUrl = new Uri (System.Configuration.ConfigurationManager.AppSettings["TargetUrl"]);
string browserExe;
switch (BrowserType)
{
case BrowserType.InternetExplorer:
browserExe = "*iexplore";
break;
case BrowserType.Firefox:
browserExe = "*firefox";
break;
default:
throw new NotSupportedException ();
}
selenium = new DefaultSelenium (testMachine, seleniumPort, browserExe, browserUrl);
selenium.Start ();
System.Console.WriteLine ("Started Selenium session (browser type={0})",
browserType);
// sets the speed of execution of GUI commands
if (false == String.IsNullOrEmpty (seleniumSpeed))
selenium.SetSpeed (seleniumSpeed);
}
Затем я просто предоставляю организатору теста конфигурацию. файл: Р>
Для MSBuild я использую переменные окружения, я создаю их в своей конфигурации CC.NET, тогда они будут доступны в скрипте. Я думаю, что это будет работать для вас тоже.
В любое время, когда мне нужно интегрироваться с внешним объектом, используя NAnt, я либо заканчиваю тем, что использую exec task , либо пишу пользовательскую задачу . Учитывая информацию, которую вы разместили, может показаться, что написание вашей собственной статьи действительно будет хорошим решением, однако вы утверждаете, что вам это не нравится. Не могли бы вы немного рассказать о том, почему вы не думаете, что текущее решение является элегантным ?
Update
Не зная внутренних подробностей, кажется, что вы решили это довольно хорошо с помощью пользовательской задачи. Из того, что я слышал, я так и сделал. Р>
Возможно, новое решение проявит себя вовремя, но пока что будьте осторожны с самим собой! Р>