2016-08-09 1 views
0

Мое требование выполняется следующим образом.Selenium. Выполнить метод один раз и использовать возвращаемое значение для всех методов @Test в классе

  1. Войдите в приложение и откройте меню свойств системы, чтобы вернуть значение свойства.
  2. Открыть другое меню в приложении и на основании значения, полученного на предыдущем шаге, выполнить тестовый сценарий.

Проблема в том, что для каждого метода @Test в том же классе мне необходимо выполнить оба шага 1 и 2, что является временем и ненужным. Свойство, полученное с шага 1, будет одинаковым во время выполнения тестов в классе.

В любом случае я могу выполнить «шаг 1» только один раз в начале теста и использовать значение свойства, возвращаемое для всех методов @Test в классе, следующем за ним?

P.S- Я проверил на dependsOnMethods аннотаций и не уверен, является ли это решение, которое я ищу.

+1

Почему бы не создать поле 'public' на уровне класса и присвоить значение с шага 1 и использовать его во всех других местах. – Siva

+0

@Siva. Есть ли какие-либо аннотации, которые я должен использовать для метода, который возвращает значение на шаге 1. Можете ли вы проиллюстрировать с небольшим синтаксисом? – DeeJay007

+0

Я никогда не работал над аннотациями, я всегда работал с настраиваемыми фреймами – Siva

ответ

1

Если вы используете JUnit, это звучит так: @BeforeClass - это то, что вы ищете. Метод с этой аннотацией выполняется только один раз для каждого класса, и вы можете сохранить любое значение, возвращаемое в глобальной переменной. Или вы можете рассмотреть аннотацию @Before (выполняется перед каждым тестом), если это вам подходит.

Другие схемы тестирования используют аналогичную идею.

+0

'@BeforeClass' может быть тем, кого я ищу. Должен ли я включать имя метода @BeforeClass в файл «testng.xml» – DeeJay007

+0

На самом деле нет необходимости в аннотации «@BeforeClass» для моего требования. Как сказал @Siva, создание публичного поля и присвоение значения с шага 1 решает мое требование. Метод шаг 1 должен быть обозначен аннотацией @Test, и его следует добавить в testng.xml и спецификации теста. – DeeJay007

+0

Я согласен с/@Siva, присваивая результат шага 1 глобальной переменной, доступной ко всем методам, является правильным. Однако сделайте его «частным», а не «публичным», если вы не намерены использовать его в каком-либо другом классе (насколько это возможно, как обычное соглашение). Кроме того, аннотации '@Before ... 'существуют по какой-то причине. Если вы выполните step1 в '@ Test', нет гарантии того, что тесты будут выполняться. '@ BeforeClass' - это путь, так как он всегда будет выполняться первым, независимо от того, где он помещается в класс. Подробнее см. В этом руководстве [ссылка] (http://www.tutorialspoint.com/testng/testng_execution_procedure.htm). – JDelorean

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