Java 中使用 if else 逻辑的自动化测试流程

尼古拉

在游戏中自动传递关卡时,我有几个用户组,它们都使用一种方法登录游戏,该方法接受用户名和密码的输入,但会收到不同数量的解锁级别,具体取决于用户组(每个用户在游戏中都有不同的可用级别)。

在测试所有关卡通过的过程中,我想在每一关结束的测试中判断用户是否有解锁下一关,要么继续测试,要么成功完成。我已经阅读了有关 selenium 的 if else 实现,我目前正在使用这样的方法:

    public boolean isElementExisting(WebElement element){
    try {
        wait.until(ExpectedConditions.elementToBeClickable(element));
    } catch (Exception e) {
        return false;
    }
    return true;
    }

并在测试中使用和 if 逻辑:

    if (isElementExisting(level3Button) == false) {
    driver.quit();
    }

    - rest of the tests follow here.

使用 a 时driver.quit();,测试自动失败。我正在寻找的所需行为是让测试通过 if 语句(可以使用什么代替driver.quit();方法)?

我可以在单独的嵌套 if/else 语句中放入用于测试进一步级别的所有代码,但这会很麻烦,目前正在寻找更实用的解决方案,比如在某个点成功测试。

尼古拉

谢谢你的回答。我理解静态测试的概念,另外还有一个测试不应该有一个“已知”的结果,但更多的是它应该有一个“预期”的结果,应该匹配,因为它测试了一些东西来验证它的功能。switch case 是一个有效的场景,坦率地说,我没有看到在发布的示例中断言失败后会发生什么(测试也会失败)。我实现的解决方案是使用类似于以下的方法来确定用户是否在上一个级别的末尾解锁了下一个级别:

    public void isElementExistingAlternateResult(WebElement element) {
    boolean isElementFound = true;
    try {
        wait.until(ExpectedConditions.elementToBeClickable(element));
    } catch (Exception e) {
        isElementFound = false;
    }

    if (isElementFound == true) {
        System.out.println("test is continued...");
    } else {
        Reporter.getCurrentTestResult().setStatus(ITestResult.SUCCESS);
        System.out.println("next level not unlocked.");
    }

这样,只有当没有找到下一个可用级别时,测试才会确定这个实时时间,并且它会在这个确切的点停止并通过。请注意,这是将其他失败的测试用例的结果与 TestNG Reporter 类的结果交替:

Reporter.getCurrentTestResult().setStatus(ITestResult.SUCCESS);

缺点 - 这使得测试无法测试为不同用户解锁不同级别的功能,因为无论解锁的级别数量如何,它都会测试它们并通过,但这比不自动化更好。

好处 - 它非常简单,非常适合大约 500 个步骤的测试用例(仅使其中的几个“动态”)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章