Appium并发测试4-python依次和并发启动多个appium服务

2024-03-21 01:18

本文主要是介绍Appium并发测试4-python依次和并发启动多个appium服务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

启动appium服务的方式有三种

  1. 通过appium desktop直接启动
  2. 通过cmd命令启动:appium –p 端口
  3. 通过python脚本启动

前面第1和第2种只能依次启动appium server,第3种可以并发同时启动appium服务

Python多进程介绍

Python启动appium主要是应用subprocess模块实现的;python并发启动appium则主要是应用多进行multiprocess模块实现的。

  1. subprocess模块:可以创建新的进程,并连接到进程的输入、输出、错误等管道信息,并且可以获取进程的返回值

subprocess.Popen():是subprocess模块定义了一个类: Popen
subprocess.Popen(args,bufsize=0,executable=None,stdin=None,stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False,  startupinfo=None, creationflags=0)

其中:

Ags表示要执行的命令

Shell当shell=True时,如果arg是个字符串,就使用shell来解释执行这个字符串。如果args是个列表,则第一项被视为命令,其余的都视为是给shell本身的参数

Stdout表示子程序的标准输出

Stderr表示自程序的标准错误输出,stderr=subprocess.STDOUT,则表示错误流合并到标准输出流里面去

 

2.multiprocess模块:可以创建新的进程
  1. 参数介绍:
1 group参数未使用,值始终为None
2 target表示调用对象,即子进程要执行的任务
3 args表示调用对象的位置参数元组,args=(1,2,'egon',)
4 kwargs表示调用对象的字典,kwargs={'name':'egon','age':18}
5 name为子进程的名称
  1. 方法介绍:
1 p.start():启动进程,并调用该子进程中的p.run() 
2 p.join([timeout]):主线程等待p终止(强调:是主线程处于等的状态,而p是处于运行的状态)。timeout是可选的超时时间,需要强调的是,p.join只能join住start开启的进程,而不能join住run开启的进程。

 

Python依次启动多个appium服务

测试场景:

启动appium服务端口:4723 ,bp端口为4724

启动appium服务端口:4725 ,bp端口为4726

注意:bp端口表示—bootstrap-port,是appium服务和设备之间通信的端口,如果不指定该端口,那无法启动多台设备

实例:启动依次启动appium服务

import subprocessfrom time import ctimedef appium_start(host,port):bootstrap_port=str(port+1)#/b表示不打开cmd命令窗口,-p表示指定appium端口,-bp表示指定appium和设备通信的端口cmd='start /b appium -a '+host+' -p '+str(port)+' -bp '+str(bootstrap_port)print('%s at %s' %(cmd,ctime()))#a是追加写入的方式subprocess.Popen(cmd,shell=True,stdout=open('appium_log/'+str(port)+'.log','a'),stderr=subprocess.STDOUT)if __name__ == '__main__':host='127.0.0.1'port=4723for i in range(2):port=4723+2*iappium_start(host,port)

执行结果:

不输入/b情况下,则会打开cmd命令窗口,如下图

 

Python并发启动多个appium服务

并发启动多个appium服务,主要是增加以下两个步骤:

  1. 构建appium进程组
  2. 加载appium进程组
  3. Main函数使用multiprocess的方法:start()和join()

实例:并发启动appium服务

import subprocessfrom time import ctimeimport multiprocessing #导入多进程模块def appium_start(host,port):bootstrap_port=str(port+1)#/b是不打开cmd命令窗口cmd='start /b appium -a '+host+' -p '+str(port)+' -bp '+str(bootstrap_port)print('%s at %s' %(cmd,ctime()))#a是追加写入的方式subprocess.Popen(cmd,shell=True,stdout=open('appium_log/'+str(port)+'.log','a'),stderr=subprocess.STDOUT)#构建appium进程组appium_process=[]#加载appium进程for i in range(2):host = '127.0.0.1'port = 4723+2*i#target指向方法,args指向参数,且必须是一个元组的形式appium=multiprocessing.Process(target=appium_start,args=(host,port))#将进程从变量appium加载到进程内appium_process.append(appium)if __name__ == '__main__':#并发启动appium服务,for循环开启多个appium服务,join主进程等待子进程结束for appium in appium_process:appium.start()for appium in appium_process:appium.join()

 

这篇关于Appium并发测试4-python依次和并发启动多个appium服务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/831347

相关文章

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Python Websockets库的使用指南

《PythonWebsockets库的使用指南》pythonwebsockets库是一个用于创建WebSocket服务器和客户端的Python库,它提供了一种简单的方式来实现实时通信,支持异步和同步... 目录一、WebSocket 简介二、python 的 websockets 库安装三、完整代码示例1.

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优