【问题标题】:E2E testing multiple posibilities with exceptionE2E 测试多种可能性,但有例外
【发布时间】:2020-02-17 14:55:36
【问题描述】:

我有一个问题,我不知道如何解决。我正在实施一个 E2E 测试,其中使用 selenium 我需要单击一个链接并检查是否将我发送到正确的 URL。

问题从这里开始......

有 3 种可能性,两种类型的链接混合,一种类型的链接或另一种类型的链接。在存在两种类型的链接的情况下没有问题,但是当它搜索我们用于不在页面中的链接的标识符时只有一种类型时,它会给我一个 timeoutException。这不是失败,因为这是一种可能的情况,但我想知道是否有一种方法可以检查它是否找不到链接,它断言抛出了异常。

我虽然使用 runCatching(或 try catch)等待链接出现,如果它没有出现,则测试断言当我查找元素时再次引发超时异常。

这样做对我来说有点味道,我不知道这样做是否正确。

编辑:我使用 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)
        }

【问题讨论】:

    标签: kotlin e2e-testing junit5


    【解决方案1】:

    我不确定我是否正确理解了您的问题,但您可以使用assertFails 断言一段代码引发了异常:

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

    【讨论】:

    • 谢谢!问题是我不知道它是否会失败,因为它取决于数据库。而且没有链接并不完全是失败。
    猜你喜欢
    • 2022-10-06
    • 1970-01-01
    • 1970-01-01
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多