APP`S兼容自动化-测试服务搭建:

21 篇文章 0 订阅
14 篇文章 1 订阅

事件起因:

  • 业务:最近有一批APP需要进行持续的兼容性测试,估计要疯!
  • 我:兼容性测试要求高吗?
  • 业务:暂时不高,安装、运行、随便点点没问题就行。
  • 我:那搞个兼容自动化测试服务吧,刚好你们有个内部系统,对接就行。
  • 业务:来、来、来,咱们细聊。

分析需求:

需求:

  1. 最好一次性能够测几台手机。
  2. 异常情况需要分类:无法安装,启动失败,兼容失败。

思路:

  1. 基础框架:flask+uiautomator2.0+logging
  2. 搞个队列:任务下发后排队处理。只管调,反正我每次只能测一个。
  3. 主动回调:不用做状态管理,搞好了通知你!
  4. 证据保存:日志+截图,用来定位问题

基础框架:

  • 准备数据:
app = Flask(__name__)  # 定义flask
testQueue = Queue(maxsize=0)  # 定义任务迭代
log = Logger().getlog()  # 定义公共日志模块,见历史文章
  • 循环迭代,做任务:
def runNum():
	"""
	单独线程持续运行队列中的任务,间隔10秒
	:return:
	"""
	while True:
		if testQueue.empty():
			pass
		else:
			data = testQueue.get()
			oldApp = data["oldApp"]
			callBackUrl = data["callBackUrl"]
			log.info("运行任务队列:{}".format(str(callBackUrl)))
			apptest1.run(oldApp, callBackUrl).runCase() # 运行任务(APP下载地址、回调地址)
			log.info("完成任务队列:{}".format(str(callBackUrl)))
			testQueue.task_done()
		time.sleep(10)
  • 准备新增任务接口:
@app.route("/runCase", methods=['POST'])
def runCase():
	data = json.loads(request.get_data(as_text=True))["cases"]
	for case in data:
		testQueue.put(case)
		log.info("新增任务队列:{}".format(str(case["callBackUrl"])))
	return jsonify(msgs())
  • 做个主入口:
if __name__ == '__main__':
	t = threading.Thread(target=runNum)
	t.start()
	host = socket.gethostbyname(socket.getfqdn(socket.gethostname()))
	port = '8080'
	app.run(host=host, port=port, debug=False, threaded=True)

基础服务框架就好了,后面需要开始具体对runCase()的实现。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值