51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 5434|回复: 0

[技术问答] 问题:用例登录成功后,在执行 tearDown 的时候(driver.quit)退出登录了?

[复制链接]
  • TA的每日心情
    开心
    2019-10-10 16:07
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    发表于 2019-10-31 10:17:12 | 显示全部楼层 |阅读模式
           老师,用例登录成功后,在执行 tearDown 的时候(driver.quit)退出登录了?
              导致后面用例执行失败
              遇见这样一个问题:
              前一个用例是登录操作,登录成功后,由于在tearDown中有driver.quit()操作,导致该用例执行完毕后tearDown时就退出登录了;而后面的一个用例则是要在登录成功的状态下才能执行的:
                     
    1. <p align="justify" style="margin: 0pt; text-align: justify; -ms-text-justify: inter-ideograph; mso-pagination: none;"><span style="font-family: Calibri; font-size: 10.5pt; font-weight: normal; mso-fareast-font-family: 宋体;" "yes";"="" 1.0000pt;="" roman";="" new="" times=""><font color="#000000">                    def tearDown(self):</font></span></p><p align="justify" style="margin: 0pt; text-align: justify; -ms-text-justify: inter-ideograph; mso-pagination: none;"><span style="font-family: Calibri; font-size: 10.5pt; font-weight: normal; mso-fareast-font-family: 宋体;" "yes";"="" 1.0000pt;="" roman";="" new="" times=""><font color="#000000">                     # <font face="宋体">停止所有的测试桩</font></font></span></p><p align="justify" style="margin: 0pt; text-align: justify; -ms-text-justify: inter-ideograph; mso-pagination: none;"><span style="font-family: Calibri; font-size: 10.5pt; font-weight: normal; mso-fareast-font-family: 宋体;" "yes";"="" 1.0000pt;="" roman";="" new="" times=""><font color="#000000">                     Stub().stop()</font></span></p><p align="justify" style="margin: 0pt; text-align: justify; -ms-text-justify: inter-ideograph; mso-pagination: none;"><span style="font-family: Calibri; font-size: 10.5pt; font-weight: normal; mso-fareast-font-family: 宋体;" "yes";"="" 1.0000pt;="" roman";="" new="" times=""><font color="#000000">                     Self.driver.quit()</font></span></p>
    复制代码


             请问这个问题该怎样去解决?注释掉tearDown函数中的self.driver.quit()是不行的,因为session未结束,后面的用例无法创建新的session




          这是你的测试用例的设计有问题。你可以进行用例组合测试用例应该是独立的,无需依赖其他任何用例的。             一个用例的输入(或者说前置条件)不应该依赖上一个用例的测试结果。要保证用例放在一起可以执行,把用例拆分开来单独执行也ok才可以。
                 我们是这样实现的:
    1. public static AppiumDriver toLogin(AppiumDriver driver, String user, String password) throws Exception {
    2. logger.info("#####Step0.1:输入用户名和密码;" + user + " / " + password);
    3. factory.get("用户名", driver).sendKeys(user);
    4. factory.get("密码", driver).sendKeys(password);
    5. logger.info("#####Step0.2:点击[登录]按钮;");
    6. factory.get("登录", driver).click();
    7. Sleeper.sleepMini();
    8. return driver;
    9. }
    复制代码

    脚本里使用时如下:


    1. ...
    2. driver.get(BaseURL);
    3. driver=Login.toLogin(driver, data.get("用户名"), data.get("密码"));
    4. ...
    复制代码
        好的,谢谢老师,我看一下   



        或者把登录操作进行封装,这样你的用例只需要调用一下就可以了。

               1)把登录作为前置条件,在@beforeSuite里面执行
               2)在第二个case中加入登录操作

       好的,谢谢老师








    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-3-29 20:53 , Processed in 0.068819 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表