上一篇简单的介绍了如何通过多线程进行启动app,但是后面发现了一个问题,就是app操作必须要等到一台结束后,下一台才能进行任务,那么有没有办法让他们同时运行呢?这个时候我们可以了解下多进程。跳转门:appium—多线程启动app(多台设备启动app)
进程和线程的区别
线程:计算机的执行单位以线程为单位。计算机的最小可执行是线程。。线程是可执行的基本单位,是可被调度的基本单位。线程不可以自己独立拥有资源。线程的执行,必须依赖于所属进程中的资源。。
进程:进程是资源分配的基本单位,进程中必须至少应该有一个线程
多进程启动app
继续上一篇文章的内容,多进程启动app,在以前的代码基础上进行修改线程部分
通过把启动appium的方法通过多进程的方法进行启动。
def main(self):
'''多进程启动'''
multi_list = []
for i in range(2):
appium_server = multiprocessing.Process(target=self.get_commad)
multi_list.append(appium_server)
for j in multi_list:
j.start()
for j in multi_list:
j.join()
测试用例
上面通过多进程的方法进行了实现了同时启动appium,但是如果想要继续启动webdriver服务,这里选择了多线程启动。
# coding:utf-8
from pages.login_page import LoginPage
import time
import os
import threading
import multiprocessing
from common.aa import Server
path =os.path.dirname(os.getcwd())
# 获取到yaml文件路径
yaml_path = os.path.join(os.path.join(path,'config'),'element.yaml')
class BaseDriver:
def login(self,driver):
page =LoginPage(driver)
time.sleep(8)
# 获取用户名元素以及输入内容
use = page.get_username_element(yaml_path)
use.send_keys('1111')
# 获取密码元素以及输入内容
pas = page.get_password_element(yaml_path)
pas.send_keys('22222')
# 进行点击登录
button = page.get_login_button_element(yaml_path)
button.click()
if __name__ == '__main__':
x = BaseDriver()
server = Server()
dev = Server().get_driver()
t1 = threading.Thread(target=server.main)
t1.start()
time.sleep(10)
aa = []
for i in dev:
devices = server.android_start(i)
t2 = threading.Thread(target=x.login,args=(devices,))
aa.append(t2)
for j in aa:
j.start()
可能对线程和进程不是很懂的理解,然后写出来这么low的代码~
点赞关注~~加入我们,642830685。群内免费领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!技术大牛解惑答疑,同行一起交流。