page object 方式,Appium+python+unittest 每次执行完 case 后,就会重新启动 app。
请教各路大神,有没有什么方式来避免这种重新启动
理论上通过复用 sessionid 可以实现不重启,但看源码没有不重启的接口
把 session 保存下来,不要每个 case 都去创建 session
setupclass
是每次执行 case 都重启 app 吧,这个配置那里可以设置不重启 app
楼主找到方法了吗 ?求解,谢谢
能把你的用例贴一下吗,应该是你在用例里手动关闭了 APP
我也暂时没找到,百度了好多方法,还是不行。每一条 case 下 APP 都会重启,再找找有合适的的话,麻烦来告知一声,谢谢! Ps:昨天看有一种设置 @classMethod的方法,你可以试下。
tearDown 里面用了关闭,如果不用的话能解决?我试试
tearDown(self):
self.driver.quit()
这种方法是可以的,但是唯有的问题就是你的 test case 都必须放在这个脚本里面,那不得多长啊。一直知道这个方法,但是和现在的 case 分离的设计个人感觉不是很符合
大致就是下面这种
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):
代码的运行过程是先 setup,然后执行 case,然后 teardown,你每次重启是因为你每次执行 case 的时候在 setup 内写了 driverd 的 start_driver(),也就是每次都重新打开一次。好点的解决方案是 driver 写到基类的全局变量中,不要写在 setup 内部
我解决了,直接把启动的 driver 放在 setUpClass 里面,不要放在 setUp 里面,因为前者是所有测试用例执行前准备,后者是每条用例执行前准备,遮掩该就可以避免掉这个问题
用 setUpclass 和 tearDownclass,不要用 setup 和 tearDown
那所有的测试用例都写在这个 py 之下? 这样就只用启动一次 driver,直到所有用例执行完成。但是这样,不好吧...