• 0
  • 0
分享

1、引言

因为小鱼在上一章节写了 多台appium的启动,

然后就联想到 能不能搞一个多进程启动appium服务。

于是乎~~

那就搞起来~ ~

关于并发的问题,小鱼写过专题文章

《常见并发问题》

《多线程并发》

《多线程并发框架》

但是呢,今天小鱼不写多线程并发,写个多进程并发

在上代码之前,咱先弄清楚,多进程与多线程,到底有何区别:

20200630115755828.png

2、代码示例

知道了多进程与多线程的区别, 我们就来写代码

代码示例:

# -*- coding: utf-8 -*-
#@ auth : Carl_DJ
#@ time : 2022-6-30

import multiprocessing
import subprocess
from  time import  ctime
def appium_start(host,port):
    '''启动appium server'''
    #指定bp端口号
    bootstrap_port = str(port+1)
    #把在cmd弹窗输入的命令,直接写到这里
    # cmd = 'start /b appium -a ' + host+' -p '+str(port) +' -bp '+ str(bootstrap_port)
    #去掉 “/b”,即可以打开cmd弹窗运行
    cmd = 'start  appium -a ' + host+' -p '+str(port) +' -bp '+ str(bootstrap_port)
    print('%s at %s' %(cmd,ctime()))
    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
    appium=multiprocessing.Process(target=appium_start,args=(host,port))
    appium_process.append(appium)
    
if __name__ == '__main__':
    #并发启动appium服务
    for appium in appium_process:
        appium.start()
    for appium in appium_process:
        appium.join()

3、总结

看到这里,是不是觉得 没有什么难度呢。 

在实际的工作中,如果涉及到多进程启动appium服务, 不妨用这个方法来试试呢。

我是奕然:

    -CSDN博客专家;

    -51讲师;

    -阿里云社区专家博主;

    -企业金牌面试官;

关注我,带你学习更多更专业的测试开发知识。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   1.制作下来菜单  1.1先选中某列,再点击数据  1.2设置值为“通过”、“未通过”注意中间为英文逗号!!!  2设置单元格值为某个值时,背景颜色发生变化  2.1先选中该列,再点击开始  2.2设置单元格值等于某值时的颜色变化  3.设置自动统计自己案例的执行比,插入countif函数(注意双引号为英文的双引号)  3.1通过数  3.2不通过数  3.3执行比(通过数+不通过数)/总数  在我们测试工作中大多数测试人员使用的用例设计方法都是黑盒用例设计方法,其中使用最多的方法就是等价类划分法和边界值分析法,这两者也是所有的用例设计方法中最简单的,但是有一个缺点是如果我们稍不注意就会造...
            0 0 8784
            分享
          •   学习自动化这个想法,其实自己在心里已经琢磨了很久,就是一直没付诸实践,觉得现在手工测试已经能满足当前的工作需要,不想浪费时间去学习新的东西,有点时间还不如刷刷视频、看看小说等。  第一次有学习Selenium的冲动是在一次被训话之后,觉得委屈了,不想干了,想换份工作。  那个时候手工测试比比皆是,没有自己的优势,所以就打算学习自动化知识来充实自己。网上视频也找了,但是仗着自己之前有点代码基础,没有按照课程系统学习,导致一知半解,在学习完Selenium录制脚本的功能之后,觉得自动化测试只是用工具录制脚本,然后回放就可以了,学习到此结束。  由于未继续学习,只会用Selenium录制脚本然后...
            0 0 624
            分享
          •   不久前,一位朋友让帮忙推荐个测试工程师,于是聊到了他们对测试工程师的诉求。  朋友公司是一家做教育软件的公司:Web端、App端产品都有涉及。  最初的诉求就是想找一位有1-2年相关产品测试经验的人即可。  但经过几轮沟通后,他的诉求增加了不少:  ·最好会一点自动化、性能,以后会用到;  · 最好会一点运维,开发测试环境要分开;  · 最好再会一点开发语言,能够写一些脚本或测试工具;  · 最好有过主导产品测试工作的经验,能够推动生产过程改进,持续质量提升。。。  原来公司对面试者的期望是:身怀绝技Or(And)十八般武艺Or(And)七十二变。  我们经常...
            0 0 507
            分享
          •   一、背景  随着各类应用快速和多样化的发展,产品迭代更换频繁,导致业务需求旺盛,开发测试任务源源不断。项目团队通过采取测试分层策略、测试数据治理、自动化回归、性能测试等一系列举措确保系统的安全生产。然而,通过调研发现,投产运行后的缺陷90%以上为性能问题,为我们敲响了性能警钟。为此,项目团队探索打破以项目维度开展性能测试的壁垒,按系统维度进行性能周期性检测,尽可能模拟系统生产运行模式,检验特定情况下是否会有系统级性能问题,降低系统投产的性能风险。  二、探索实践  性能周期性检测实践从性能测试环境建设、性能测试范围选取、测试脚本集准备、性能测试场景设置、性能测试结果对比分析及调优几个维度逐...
            1 1 2301
            分享
          •   背景  随着分布式数据库的日渐成熟,在金融行业逐渐推行分布式数据库的使用,如何验证分布式数据库的高可用性是应用方所关注的。  本文针对主流的TDSQL分布式数据库,在测试环境模拟真实业务持续压测,通过人为制造数据节点故障,观测业务具体表现和赤免监控指标得出RTO数值。  相关概念  RTO:恢复时间目标,主要指的是所能容忍的业务停止服务的最长时间,也就是从灾难发生到业务系统恢复服务功能所需要的最短时间周期。  数据库恢复时间,指数据库停止对外服务到重新提供服务的时间。  Xmeter:一种性能测试发压工具,可以高效的模拟客户端发起高并发请求,同时统计测试结果。  分片:是把数据库横向扩展到...
            0 0 933
            分享
      • 51testing软件测试圈微信