E2E тестирование нескольких возможностей за исключением - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть проблема, которую я точно не знаю, как решить. Я внедряю тест E2E, в котором с помощью селена мне нужно щелкнуть ссылку и проверить, что отправляет меня на правильный URL.

Здесь начинается проблема ...

Есть 3 варианта, сочетание двух типов ссылок, только один тип ссылки или другой тип ссылки. Нет проблем с ситуациями, в которых есть оба типа ссылок, но когда есть только один тип, когда он ищет идентификатор, который мы используем для ссылок, которых нет на странице, это дает мне исключение timeoutException. Это не ошибка, потому что это возможная ситуация, но я хотел бы знать, есть ли способ проверить, что, если он не находит ссылок, он утверждает, что выброшено исключение.

Хотя я использую runCatching (или попробуйте перехватить) дождитесь появления ссылки, и если она не появится, тест утверждает, что когда я ищу элемент, снова возникает исключение тайм-аута.

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

РЕДАКТИРОВАТЬ: я использую AssertK и JUnit5 для тестирования.

РЕДАКТИРОВАТЬ 2: я сделал это, я не знаю, если это правильный способ сделать это

runCatching {
            driver.waitFor(numberOfWidgetsToBeMoreThan(BrowserSelector.cssSelector(OFFERS_WITH_PRICE_AND_DATE), 0), ofMillis(2000))
        }.onFailure {
            assertThrows<WaitTimeoutException> {
                findLink(OFFERS_WITH_PRICE_AND_DATE)
            }
        }.onSuccess {
            val widget = findLink(OFFERS_WITH_PRICE_AND_DATE)
            widget.click()
            assertThat(driver.url).contains(NO_DATE_TEXT)
        }

1 Ответ

0 голосов
/ 17 февраля 2020

Я не уверен, что правильно понял вашу проблему, но вы можете использовать assertFails , чтобы утверждать, что фрагмент кода вызывает исключение:


@Test
fun test() {
    val exception = assertFails {
        // some code that should throw
    }
    // some more assertions on the type of exception etc. may go here
}
...