自动化测试平台实战 - 作业

课后作业

1、至少2台模拟器,并行运行自动遍历
2、至少2台模拟器,并行运行po的用例

郑向红-作业1:并行运行了自动遍历





作业2:并行运行企业微信添加联系人
启动selenium grid Hub


node1配置并注册成功

Node2配置并注册成功

执行用例:


执行过程:

用脚本并行跑用例:

陈智斌,自动化测试平台实战作业提交:

自动化遍历:
xpath配置:


执行指令:

执行过程

并行运行po的用例
启动 selenium gird 的hub

node节点配置文件
node节点1
image

node节点2
image

node节点启动
image

image

用例执行
image
image

执行效果

备注
由于登录一个企业微信之后,另外一个会掉线,手机号欠缺……所以第二个截图的操作不一致,另外一个手机有登录的时候,是可以正常执行用例的,分发跟同时执行的逻辑是可以的

写的不错,node结点里面可以指定udid 也可以不指定。hub会自动分配测试任务到node结点上。

写以写个shell 脚本,每次收集要运行的测试设备,不用每次都开多个窗口,启动不同的测试任务。

做业完成的不错。

可以思考一下如何将上面的测试任务,放在一个 shell 脚本中集中调度,每次收集要运行的测试设备,不用每次都开多个窗口,启动不同的测试任务。

课后作业

1、至少2台模拟器,并行运行自动遍历
crawer1.yml

capability:
  noReset: "true"
  fullReset: "false"
  automationName: "UiAutomator1"
  appium: "http://127.0.0.1:4726/wd/hub"
  appPackage: "com.xueqiu.android"
  appActivity: ".view.WelcomeActivityAlias"
  udid: "127.0.0.1:7555"

crawer2.yml

capability:
  noReset: "true"
  fullReset: "false"
  appium: "http://127.0.0.1:4725/wd/hub"
  appPackage: "com.xueqiu.android"
  appActivity: ".view.WelcomeActivityAlias"
  udid: "192.168.247.103:5555"
  • 启动hub节点:java -jar selenium-server-standalone-3.141.59.jar -role hub
    node1.json
{
  "capabilities":
      [
        {
          "browserName": "<e.g._iPhone5_or_iPad4>",
          "version":"6.0",
          "maxInstances": 1,
          "platform":"ANDROID"
        }
      ],
  "configuration":
  {
    "cleanUpCycle":2000,
    "timeout":30000,
    "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
    "url":"http://127.0.0.1:4723/wd/hub",
    "host": "127.0.0.1",
    "port": 4723,
    "maxSession": 1,
    "register": true,
    "registerCycle": 5000,
    "hubPort": 4444,   
    "hubHost": "172.28.54.81",  
    "hubProtocol": "http" 
  }
}

node2.json

{
  "capabilities":
      [
        {
          "browserName": "<e.g._iPhone5_or_iPad4>",
          "version":"5.1",
          "maxInstances": 1,
          "platform":"ANDROID"
        }
      ],
  "configuration":
  {
    "cleanUpCycle":2000,
    "timeout":30000,
    "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
    "url":"http://127.0.0.1:4725/wd/hub",
    "host": "127.0.0.1",
    "port": 4725,
    "maxSession": 1,
    "register": true,
    "registerCycle": 5000,
    "hubPort": 4444,   
    "hubHost": "172.28.54.81",  
    "hubProtocol": "http" 
  }
}
  • 启动2个node节点:
    appium -p 4723 --nodeconfig node1.json
    appium -p 4725 --nodeconfig node2.json
    image
  • 运行自动遍历
    image

2、至少2台模拟器,并行运行po的用例

  • 修改app.py 文件
    def start(self):
        _package="com.tencent.wework"
        _activity=".launch.WwMainActivity"
        if self.driver is None:
            caps={}
            caps['platformName'] = 'Android'
            # caps['platformVersion'] = '6.0'
            # caps['deviceName'] = '127.0.0.1:7555'
            caps['automationName'] = 'UiAutomator1'
            caps['appPackage'] = _package
            caps['appActivity'] = _activity
            caps['noReset'] = 'true'
            caps['autoGrantPermissions']=True
            caps['udid'] = os.getenv('udid', None)
            self.driver = webdriver.Remote("http://172.28.54.81:4444/wd/hub", caps)
            self.driver.implicitly_wait(10)
        else:
            self.driver.launch_app()
        return self
  • app.sh 执行测试用例
#!/bin/bash
devices=`adb devices | grep -w 'device' | awk '{print $1}'`
for device in $devices;do
  echo $device
  udid=$device pytest D:/AutoCode/lagouhomework/appwechatPO/testcase/test_contact.py &
done

嗯,脚本的执行情况截图了,脚本忘截图了。

谢谢指导,补一下完善的逻辑
启动服务的批处理
image
执行脚本的sh 脚本
image