Calabash+Gearman达成多手机同步测试机制
发布时间:2021-12-11 10:07:53 所属栏目:教程 来源:互联网
导读:Calabash-Android是支持android的UI自动化测试框架,但不支持多手机同步测试。本文介绍如何利用任务分发系统Gearman的消息同步机制,配合Calabash实现多手机同步测试机制。 背景介绍 Calabash-android是支持android的UI自动化测试框架。 Gearman是一个分发任
|
Calabash-Android是支持android的UI自动化测试框架,但不支持多手机同步测试。本文介绍如何利用任务分发系统Gearman的消息同步机制,配合Calabash实现多手机同步测试机制。 背景介绍 Calabash-android是支持android的UI自动化测试框架。 Gearman是一个分发任务的程序框架,可以用在各种场合,与Hadoop相比,Gearman更偏向于任务分发功能。它的 任务分布非常 简单,简单得可以只需要用脚本即可完成。 gearman Ubuntu上安装Gearman $ sudo apt-get install gearman-job-server $ gearmand -V gearmand 1.0.6 - https://bugs.launchpad.net/gearmand $ sudo apt-get install gearman-tools $ gearman -H 启动gearman job server,作为后台服务运行: $ sudo gearmand -d 多手机同步测试举例 假设要测试微信的发送消息功能,calabash的测试用例可以按如下方式撰写: AA-send-message-to-BB–role-AA.feature: Feature: 微信测试发送消息给好友-角色A Scenario: 微信测试发送消息给好友 ...打开微信软件,作为帐号A登录,进入与好友B的聊天窗口 When I send weixin message "A说,你好!" # 微信聊天窗口中发送消息 And I send sync message "A说,你好!" to role "BB" Then I see "A说,你好!" #我能看到自己说的话 When I wait sync message $AA_sync_1 as role "AA" Then I see $AA_sync_1 #我能看到对方说的话 ... AA-send-message-to-BB–role-BB.feature: Feature: 微信测试发送消息给好友-角色B Scenario: 微信测试发送消息给好友 ...打开微信软件,作为帐号B登录,进入与好友A的聊天窗口 When I wait sync message $BB_sync_1 as role "BB" Then I see $BB_sync_1 #我能看到对方说的话 When I send weixin message "B说,你好!" # 微信聊天窗口中发送消息 And I send sync message "B说,你好!" to role "AA" Then I see "B说,你好!" #我能看到自己说的话 ... 命令行终端1中运行AA-send-message-to-BB–role-AA.feature $ export ADB_DEVICE_ARG=HTC-G9 $ export GEARMAN_JOB_SERVER=localhost $ calabash-android run weixin.apk -r features/ features/AA-send-message-to-BB--role-AA.feature 命令行终端2中运行AA-send-message-to-BB–role-BB.feature $ export ADB_DEVICE_ARG=HWAWEI-P7 $ export GEARMAN_JOB_SERVER=localhost $ calabash-android run weixin.apk -r features/ features/AA-send-message-to-BB--role-BB.feature calabash中封装gearman命令实现同步机制 sync_step.rb: # encoding: utf-8 require 'calabash-android/calabash_steps' When /^I wait sync message $([^$]*) as role "([^"]*)"$/ do |msg_ev, role| gearman_job_server=ENV["GEARMAN_JOB_SERVER"] fail "环境变量::GEARMAN_JOB_SERVER::未定义! 设置方法: export GEARMAN_JOB_SERVER=localhost" if ( gearman_job_server == nil) uuid=`uuidgen`.strip cmd="gearman -h #{gearman_job_server} -t 30000 -w -c 1 -f receiver_#{role} -- tee /tmp/#{role}-#{uuid}; cat /tmp/#{role}-#{uuid}" puts "角色#{role}准备执行命令:#{cmd}" message=`#{cmd}`.strip fail "未收到同步消息" if ( message == "" ) ENV[msg_ev]=message puts "角色#{role}接收到同步消息: #{ENV[msg_ev]}" end When /^I send sync message "([^"]*)" to role "([^"]*)"$/ do |msg, role| gearman_job_server=ENV["GEARMAN_JOB_SERVER"] fail "环境变量::GEARMAN_JOB_SERVER::未定义! 设置方法: export GEARMAN_JOB_SERVER=localhost" if ( gearman_job_server == nil) fail "sync message 为空" if ( msg == "" ) cmd="echo '#{msg}' | gearman -h #{gearman_job_server} -t 30000 -f receiver_#{role}" puts "角色#{role}准备执行命令:#{cmd}" response=`#{cmd}`.strip fail "发送同步消息失败" if ( response != msg ) puts "发送同步消息给角色#{role}: #{msg}" end When /^I send sync message $([^$]*) to role "([^"]*)"$/ do |msg_ev, role| gearman_job_server=ENV["GEARMAN_JOB_SERVER"] fail "环境变量::GEARMAN_JOB_SERVER::未定义! 设置方法: export GEARMAN_JOB_SERVER=localhost" if ( gearman_job_server == nil) msg=ENV[msg_ev] response=`echo "${msg}" | gearman -h #{gearman_job_server} -f receiver_#{role}` fail "发送同步消息失败" if ( response != msg ) puts "发送同步消息给角色#{role}: #{msg}" end calabash_steps.rb: # encoding: utf-8 require 'calabash-android/calabash_steps' Then /^I see $([^$]*)$/ do |text_ev| text = ENV[text_ev] steps %{ Then I see "#{text}" } end ![]() (编辑:开发网_开封站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐
热点阅读



浙公网安备 33038102330459号