Селен более одного baseUrl на тестовый класс

Я пишу сценарии селена для сложного веб-приложения.

Чтобы использовать учетную запись пользователя, мне нужно сначала зарегистрироваться, используя один URL-адрес, а затем утвердить учетную запись в консоли администратора по другому URL-адресу.

Проблема в том, что есть еще один baseURL для регистрации и консоли администратора, и он мне нужен в одном модуле.

Но когда я использую setBaseUrl в своих тестах, он игнорируется и используется старый baseURL. Я даже вызвал start () после этого, но без изменений ...

Есть ли уловка, о которой я не знаю? Я довольно долго играю и отлаживаю эту проблему, но разделенные (test ‹-> RCServer) тесты на селен не упрощают пошаговое выполнение ... ;-)


person Patrick Cornelissen    schedule 10.05.2010    source источник
comment
Я всегда думал, что модульные тесты выполняются на уровне вашей модели, а не на уровне представления. Есть ли особая причина, по которой вы выполняете модульные тесты на уровне представления? Также модульный тест предназначен для тестирования одного модуля (метода), а не серии методов.   -  person Thomas Winsnes    schedule 10.05.2010
comment
тесты уровня представления необходимы, потому что мы используем эти сценарии для обеспечения базовой функциональности продукта после создания новой версии. Выполнение этих задач вручную занимает более часа, а использование селена позволяет сократить время до ~ 5 минут.   -  person Patrick Cornelissen    schedule 11.05.2010


Ответы (2)


Поскольку вы отметили этот selenium-rc, я предполагаю, что вы используете rc.

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

На стороне сервера вам по-прежнему нужен только один. Сервер с радостью запустит два экземпляра браузера по запросу, используя два экземпляра клиента.

Мориц

изменить: просто чтобы добавить это, теперь экземпляр селена может быть создан в любое время с помощью

Selenium s = new DefaultSelenium("localhost", 4444, "*chrome", 
            "http://your-target-url");

Предполагая, что сервер селена находится на локальном порту 4444.

person Moritz Both    schedule 12.05.2010
comment
очень интересная идея. Я попробую это в понедельник - person Patrick Cornelissen; 13.05.2010

OK Selenium, похоже, не предназначен для такого рабочего процесса.

Я разделил тестовый класс на три тестовых класса.

  1. Базовая регистрация с использованием первого baseURL
  2. Утверждение с помощью secondf baseURL
  3. Простые задачи с использованием первого baseURL снова

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

person Patrick Cornelissen    schedule 12.05.2010