访问被拒绝,你可能没有权限或未登录,或者你还在新人期。
遇见这样一个问题:
前一个用例是登录操作,登录成功后,由于在 tearDown 中有 driver.quit() 操作,导致该用例执行完毕后 tearDown 时就退出登录了;而后面的一个用例则是要在登录成功的状态下才能执行的:
def tearDown(self):
# 停止所有的测试桩
Stub().stop()
self.driver.quit()
请问这个问题该怎样去解决?注释掉 tearDown 函数中的 self.driver.quit() 是不行的,因为 session 未结束,后面的用例无法创建新的 session。
#1 楼 @xiang2743 你的意思是在登录后,继续把其他的用例不单独写,而是写在这个登录用例的后面,teardown 前,共同完成一系列的动作吗?
这是你的测试用例的设计有问题。
测试用例应该是独立的,无需依赖其他任何用例的。
一个用例的输入(或者说前置条件)不应该依赖上一个用例的测试结果。要保证用例放在一起可以执行,把用例拆分开来单独执行也 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("密码"));
...
单独写一个 driver 的继承方法,用 Map,发现 driver = null 时候创建,否则继承启动的 driver.我们现在就是这样做的。
public static AppiumDriver getManagerDriver() {
if (size() == 0) {
newDriver(setManagerCapability(), manager_hub_4723,
baseDriverName_Manager);
}
return driver;
}