• appium多机并行测试


    在实际应用中需要对多个机型并行测试,节省时间

    多机测试的思路

    启动多个appium server与多台机器交互(android和ios均可)
     
    注意:一定要使用node安装appium的命令行,使用appium命令启动多个服务
    启动命令时指定server端口号,以及与客户端交互的各项端口号
     
    以下命令都是后台启动的,使用的mac的后台启动方式[ nohup 命令 &],如果是windows机使用[start /b 命令]

    Android多机的server启动命令 

    startservercmd = "nohup appium  --session-override -a " + address + " -p " +Appium_port +" -bp "+bootstrap_port
    +" --selendroid-port "+selendroid_port+" --chromedriver-port " +chromedriver_port+" -U "+deviceid+" "+" --no-reset &"
     
    各项说明:
    address:启动server的地址,如果不指定为0.0.0.0
    Appium_port:启动的server的端口号,默认4723
    bootstrap_port:与高版本(4.2及以上)android机交互的端口号,默认3724
    selendroid_port:与低版本(4.2以下)android机交互的端口号,默认8080
    chromedriver_port:与chrome浏览器交互的端口号,默认9516
    deviceid:设备的id(adb devices查看)
     
    注意:android多机启动server一定要指定-U参数,否则在windows上运行时会抛错
     
    iOS多机的server启动命令
    startservercmd = "start /b appium --session-override -a " + address + " -p " + Appium_port+" --webdriveragent-port “+webdriveragent_port
     
    各项说明:
    address:启动server的地址,如果不指定为0.0.0.0
    Appium_port:启动的server的端口号
    webdriveragent_port:与iOS客户端交互的webdriveragent的端口号,默认8010

    多进程启动server命令,客户端进行连接

    通过多进程进行多机测试
    定义一个递增增量,每个进程都在基础端口号上增加这个递增增量,保证每个server的端口号不会冲突
     
    下面为多进程的代码,devices为连接的手机的deviceid列表,testsuit()为要执行的case入口
     
    if __name__ == "__main__":
        if devices == []:
            log().log("先插入手机再进行测试谢谢!当前需要的手机系统:"+optionsystem)
            sys.exit()
     
        if len(devices) == 1:
            testsuit()
        else:
            from multiprocessing import Process
            port_d=1#各个端口号的差值
     
            for deviceid in devices:
                t=Process(target=testsuit, args=(port_d,))
                t.start()
                port_d =port_d+1
     
    说明:port_d就是上面上的定增增量,通过这个变量我们可以加到基础端口号上(基础端口号自己写到一个公共变量里就好,比如appium server用4723)
     
    启动了服务器,就可以通过不同的appium server端口号连接到服务器了
    webdriver.Remote('http://127.0.0.1:'+appiumport+'/wd/hub', desired_caps)
     
    注意:在windows中启动多进程一定要把多进程的连接写到【if __name__ == “__main__”:】下面,否则进行webdriver启动连接时会被拒绝
  • 相关阅读:
    迭代器和生成器
    小练习函数
    python学习(函数)
    python学习(文件的操作)
    【Python基础】数据结构
    【Python基础】break 和 continue 语句, 以及循环中的 else 子句
    【Python算法】汉诺塔
    【Python基础】序列(字符串、列表、元组)
    【Python基础】正则表达式
    【Python练习】分类数据
  • 原文地址:https://www.cnblogs.com/meitian/p/7590305.html
Copyright © 2020-2023  润新知