TimiZheng 发表于 2019-10-31 10:17:12

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

{:4_96:}       老师,用例登录成功后,在执行 tearDown 的时候(driver.quit)退出登录了?
          导致后面用例执行失败          遇见这样一个问题:          前一个用例是登录操作,登录成功后,由于在tearDown中有driver.quit()操作,导致该用例执行完毕后tearDown时就退出登录了;而后面的一个用例则是要在登录成功的状态下才能执行的:                <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。



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

...
driver.get(BaseURL);
driver=Login.toLogin(driver, data.get("用户名"), data.get("密码"));
...{:4_94:}    好的,谢谢老师,我看一下   


{:3_67:}    或者把登录操作进行封装,这样你的用例只需要调用一下就可以了。
         1)把登录作为前置条件,在@beforeSuite里面执行         2)在第二个case中加入登录操作
{:4_85:}   好的,谢谢老师:P







页: [1]
查看完整版本: 问题:用例登录成功后,在执行 tearDown 的时候(driver.quit)退出登录了?