为了账号安全,请及时绑定邮箱和手机立即绑定

Java 中带有 if else 逻辑的自动化测试流程

Java 中带有 if else 逻辑的自动化测试流程

宝慕林4294392 2022-05-21 16:55:33
在游戏中自动传递关卡时,我有几个用户组,它们都使用一种方法登录游戏,该方法接受用户名和密码的输入,但会收到不同数量的解锁关卡,具体取决于用户组(每个用户在游戏中都有不同的可用级别)。在测试所有关卡通过的过程中,我想在每个关卡结束的测试过程中确定用户是否解锁了下一个关卡,是继续测试还是成功完成。我已经阅读了 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.使用时driver.quit();测试自动失败。我正在寻找的期望行为是让测试通过 if 语句(可以使用什么来代替driver.quit();方法)?我可以将所有代码用于在单独的嵌套 if/else 语句中测试进一步的级别,但这会很麻烦,目前正在寻找更实用的解决方案,比如在某个点成功测试。
查看完整描述

2 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

测试应该是静态的,因为它应该有一个已知的结果。因此,测试的结构和编写方式应该遵循这个逻辑。


鉴于上述内容,我会编写一个类似这样的测试:


login.asUser(username,password);

// additional logic in here

assertTrue(page.userHasLevelUnlocked("level3"));

然后方法


public boolean userHasLevelUnlocked(String level){

    switch(level)

        case "level3":

            if(isElementExisting(level3button){

            return true;

            } else {

            return false

            }

}

或类似的规定


查看完整回答
反对 回复 2022-05-21
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

我理解静态测试的概念,此外,测试不应该有“已知”的结果,而更多的是它应该有一个“预期的”结果,应该匹配,因为它测试了要验证的东西它的功能。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 个步骤的测试用例(使其中只有少数是“动态的”)。


查看完整回答
反对 回复 2022-05-21
  • 2 回答
  • 0 关注
  • 146 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号