起始在 setUp 调 devices_start_sync(),print 打出来的日志拿不到 driver 的 return 值。求解答!!
猜测可能是多进程之间内存不共享导致的
你的 Self.driver = devices_start_sync()但是 devices_start_sync 这个并没有返回值啊,只是起了两个子进程而已
而且并发不是这么做的吧。,, 正常的流程应该是起多个子进程 然后每个子进程里面执行命令去获取 driver 跑脚本什么的
devices_start_sync 函数起了进程以后是走到 appium_desire 函数里的,在这里面有返回 driver。但是这里面的值 return 出来在 unittest 框架里拿不到值
嗯是的,不同的手机需要用不同的 driver 驱动把,所以要构建多个。现在是能够同时进入主页,但是找不到 driver 不能跑后面的用例了
感觉这个思路怪怪的,你这里的并发是多用例并行执行还是啥?
如果是多用例并行执行,那每个用例自己管理自己的 driver 就好,用不着搞个 devices_start_sync 来做。框架只需要起几个固定线程,线程一空闲就去全局的待执行用例列表拉用例执行就好。
如果是镜像执行(用例里每一个操作每个 driver 都操作一遍),那应该在 driver 外层封装一个类,用例用这个类,类里面的方法都会自动遍历内部持有的所有 driver 每个执行一遍。
不过这种比较少见,而且也很难处理中间单个设备出现的异常引起的问题。所以更多见到的情况是保障每个设备都有执行过全量用例就行。实现上是多用例并行执行的基础上,把待执行用例列表从一个公共列表,变为每个线程都有一个独立的列表就好了。
PS:这两种模式的并行执行用例,都比较常见,印象中 pytest 有自带这方面的功能。如果要省力,可以考虑看看 pytest 自带的功能是否满足
现在是想做的是,比如 1000 个用例。我一台手机的话得跑 1000 次才能执行完,我现在搞两台手机去跑,划分下他们各自执行的部分,每台手机跑 500 条,然后跑完的报告输出在一个 HTML 里。这看起来像是你说的第一种
可以看下 Pytest 的并行是否满足?
不过多设备的话,不同设备用不同 driver ,这个还是得小改造下用例里获取 driver 的方法的。用 appium 并行
搜索了下,找到几篇应该有借鉴意义的文章:
http://testerhome.com/topics/1944
http://testerhome.com/topics/12331
你也可以自己搜索下,这块社区以前有不少同学分享过。