问题:用例登录成功后,在执行 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]