Параметризация тестового класса в Unit Testing Framework для запуска в разных браузерах


(toney) #1

Стоит задача: Выполнить запуск тестов на удаленной машине в разных браузерах.
Использую Selenium Grid, то есть запустила hub консольной командой

java -jar selenium-server-standalone-2.44.0.jar -role hub

и node с параметрами

java -jar selenium-server-standalone-2.44.0.jar -role node -hub http://localhost:4444/grid/register -browser browserName=chrome,version=18,platform=WINDOWS

Тест написан на c# в среде Visual Studio с применением Microsoft.VisualStudio.QualityTools.UnitTest
Метод Set Up() содержит определение capabilities:

DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities = DesiredCapabilities.Chrome();
    capabilities.SetCapability(CapabilityType.BrowserName, "chrome");
    capabilities.SetCapability(CapabilityType.Platform, new Platform(PlatformType.Windows));
    capabilities.SetCapability(CapabilityType.Version, "18");
    driver = new RemoteWebDriver(new Uri("http://localhost:4444/wd/hub"), capabilities);

Этот способ мне совсем не подходит так как в коде теста явно указывается какой браузер запускать.
Возможно ли каким-либо образом в коде теста определить с какими параметрами запущена node и далее в зависимости от этой информации запускать подходящий браузер?


(vmaximv) #2

Как-то все “с ног на голову”. А если к хабу подключено три ноды, и на каждой сетнутнуты разные браузеры?


(Александр Таранков) #3

Зачем так усложнять? Просто передавай параметр browserName в тест, не надо его автоматически определять


(toney) #4

Я не пойму как тестовый метод должен определять, где ему выполняться, на какой ноде
Должны ведь параметры в тест, верно?
Мне нужно, чтобы один тест поддерживал выполнение на разных браузерах, далее соответственно на разных нодах


(toney) #5

Этот параметр как получить? Прописать где-то (например, в xml файле), а затем сравнивать с этим значением в тесте?


(vmaximv) #6

Тестовый метод это и не должен определять - эта задача грида. Вы видимо не до конца понимаете концепцию грида.


(Александр Таранков) #7

Параметр передается тесту при запуске. Как передать параметр запуска для теста - надо читать документацию по MS UnitTest. В тесте этот параметр читаешь и инициализируешь соответствующий драйвер


(toney) #8

подскажите, пожалуйста как в тесте указать какой драйвер запускать, если запущена, например, нода с параметрами
java -jar selenium-server-standalone-2.44.0.jar -role node -hub http://localhost:4444/grid/register -browser browserName=“internet explorer”,version=8.0,platform=WINDOWS

как это реализовать на c# ?
в интеренете нашла как сделать для testng
На Java можно прописать в аннотации перед тестом
@Parameters({ “platform”,“browser”,“version”})
и config.xml :

	<parameters>
		<parameter name="platform"
					value="Windows" />
		<parameter name="browser"
					value="internet explorer" />
		<parameter name="version" value="8.0" />
	</parameters>

(Александр Таранков) #9

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

Если же тебе просто надо чтобы все тесты запускались под указанным браузером, то просто в SetUp читай переданный тесту параметр browserName и инициализируй соответствующий драйвер.

Как реализовать на C# я не знаю, читай доку по UnitTest-фреймворку, как ему передать параметр