2014-09-01 2 views
1

У меня есть ряд тестов Selenium, написанных на C#, которые скомпилируются в .dll, который запускается из командной строки с помощью nunit-console.exe.Выполнение тестовых примеров NUnit с одной переменной

Эти тесты работают отлично на данный момент в моей испытательной среде, состоящей из одного сайта, но мне нужно для испытания более общего назначения ...

Идея этих испытаний является то, что они будут использоваться после развертывания части программного обеспечения. Развернутое программное обеспечение настроит сайт в IIS, и этот сайт будет привязан к порту, который будет автоматически назначен на основе того, что доступно в то время. Мне нужно, чтобы мои тесты знали, на каком порту будет работать веб-сайт, иначе он может тестировать неправильный сайт. Я могу определить порт, на котором он работает, используя возвращаемое значение из инструментов развертывания, которые я использую.

Мой вопрос заключается в следующем: возможно ли передать аргумент (например, номер порта сайта) в nunit-консоль, который может использоваться моими уже скомпилированными Selenium-тестами?

Единственное другое решение, о котором я могу думать, это построить тесты после развертывания. Я хотел бы избежать этого, поскольку программное обеспечение уже прошло этап сборки, и создание снова кажется беспорядочным для меня, особенно если наш сервер сборки (Bamboo) теряет видимость процесса строительства из-за того, что он является некоторым настраиваемым скриптом в задаче развертывания.

Заранее спасибо.

+0

Это конфигурация. Итак, файл конфигурации. Вы говорите, что возвращаемое значение из развертывания сообщает вам, в каком порту он включен. Поэтому используйте язык сценариев, например PowerShell, чтобы затем прочитать файл конфигурации и отредактировать его. Работа выполнена. – Arran

ответ

3

Вы можете использовать переменную окружения.

В вашем селеном тесте вы можете прочитать его с

var port = System.Environment.GetEnvironmentVariable("SITE_PORT");

и вы можете установить его из различных источников, например, пакетного сценария или запроса:

set SITE_PORT=<result of command>

+0

Спасибо, я вижу, что это решение работает лучше всего. –

0

AFAIK есть не в состоянии сделать это в текущей версии NUnit. Одним из возможных решений в вашем случае может быть файл конфигурации (который я иногда использую). Если вы знаете, на каком порту выполняются ваши тесты, вы можете сохранить эту информацию в файле конфигурации и получить от нее данные (с помощью ConfigurationManager): url или wathether вам нужно. Вы не будете тратить слишком много времени на смену тестов (вам это почти не нужно, просто добавьте метод, который получает url из файла конфигурации и вставляет его в правильное место =)).

Смежные вопросы