老师,用例登录成功后,在执行 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。
这是你的测试用例的设计有问题。你可以进行用例组合测试用例应该是独立的,无需依赖其他任何用例的。 一个用例的输入(或者说前置条件)不应该依赖上一个用例的测试结果。要保证用例放在一起可以执行,把用例拆分开来单独执行也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("密码"));
- ...
复制代码 好的,谢谢老师,我看一下
或者把登录操作进行封装,这样你的用例只需要调用一下就可以了。
1)把登录作为前置条件,在@beforeSuite里面执行 2)在第二个case中加入登录操作
好的,谢谢老师
|