Appium Appium 每次都会执行完 case 后时都要重新启动 App

pythonCN · 2018年05月31日 · 最后由 pythonCN 回复于 2018年10月12日 · 5052 次阅读

page object 方式,Appium+python+unittest 每次执行完 case 后,就会重新启动 app。
请教各路大神,有没有什么方式来避免这种重新启动

共收到 34 条回复 时间 点赞

理论上通过复用 sessionid 可以实现不重启,但看源码没有不重启的接口

把 session 保存下来,不要每个 case 都去创建 session

是每次执行 case 都重启 app 吧,这个配置那里可以设置不重启 app

小蜜蜂 回复

可否具体描述下怎样设置吗,遇到同样问题

枫叶 回复

等我晚上回去后再给你详细说明

小蜜蜂 回复

好的,感谢哈

小蜜蜂 回复

求方法

pythonCN 回复

不好意思,昨天忘了,今晚回去弄

小蜜蜂 回复

求方法😂

小蜜蜂 回复

😀 OK

pythonCN 回复


在这个配置里面加上 noReset=True 就不会重置 app 了,也可以在 appium 把这个勾选看下实际效果

楼主找到方法了吗 ?求解,谢谢

119 回复

还没找到办法,楼上的方法都不行。

pythonCN 关闭了讨论 06月19日 22:30
pythonCN 重新开启了讨论 06月19日 22:30
小蜜蜂 回复

还是不行。。。

能把你的用例贴一下吗,应该是你在用例里手动关闭了 APP

pythonCN 回复

我也暂时没找到,百度了好多方法,还是不行。每一条 case 下 APP 都会重启,再找找有合适的的话,麻烦来告知一声,谢谢! Ps:昨天看有一种设置 @classMethod的方法,你可以试下。

arrow 回复

tearDown 里面用了关闭,如果不用的话能解决?我试试
tearDown(self):
self.driver.quit()

119 回复

这种方法是可以的,但是唯有的问题就是你的 test case 都必须放在这个脚本里面,那不得多长啊。一直知道这个方法,但是和现在的 case 分离的设计个人感觉不是很符合

仅楼主可见
119 回复

大致就是下面这种
class Test(unittest.TestCase):
@classmethod
def setUpClass(cls):
print "start!"

@classmethod
def tearDownClass(cls):
time.sleep(1)
print "end!"

def test_case01(self):

def test_case02(self):

def test_case03(self):

雨夜狂奔 回复

具体怎样操作喃?

小蜜蜂 回复

什么设置啊?我用的 android 机好像没有这个设置哦

能详细说明下么

pythonCN 回复

简单来说就是把你的 driver 保存在全局变量,每次用例都复用这个 driver 就不会重启了

雨夜狂奔 回复

大佬来一段 demo 吧,😀

代码的运行过程是先 setup,然后执行 case,然后 teardown,你每次重启是因为你每次执行 case 的时候在 setup 内写了 driverd 的 start_driver(),也就是每次都重新打开一次。好点的解决方案是 driver 写到基类的全局变量中,不要写在 setup 内部

chunlei 回复

有没有 demo 借鉴一下😀

雨夜狂奔 回复

你好,能给指导一下吗?我也遇到了这个问题:qq421071642

枫叶 回复

你的问题解决了吗?你好,能给指导一下吗?我也遇到了这个问题:qq421071642

按照楼上的说明把那个设置改下就可以了

我解决了,直接把启动的 driver 放在 setUpClass 里面,不要放在 setUp 里面,因为前者是所有测试用例执行前准备,后者是每条用例执行前准备,遮掩该就可以避免掉这个问题

用 setUpclass 和 tearDownclass,不要用 setup 和 tearDown

36楼 已删除
pythonCN 关闭了讨论 10月12日 17:03
pythonCN 重新开启了讨论 10月12日 17:03
yang 回复

那所有的测试用例都写在这个 py 之下? 这样就只用启动一次 driver,直到所有用例执行完成。但是这样,不好吧...

pythonCN 关闭了讨论 01月23日 11:10
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册