主要测试前面已经完成了,现在就是runCase()主体。
- 主体数据准备:
class run:
def __init__(self, oldApp, callBackUrl):
self.oldApp = oldApp
self.callBackUrl = callBackUrl
self.data = [] # 回调数据
- 回调封装:
def __callBack(self, json):
time.sleep(TIME)
url = self.callBackUrl
a = requests.post(url=url, json=json)
log.info("回调 {}; {} ; {}".format(url, json["msg"], a.content.decode()))
romApk("./resTest/screenshot") # 根据需要清除记录
romApk("./resTest/old") # 根据需要清除记录
def romApk(path):
ls = os.listdir(path)
for i in ls:
os.remove(os.path.join(path, i))
- 用例:(后期可以根据需要增加测试用例)
def __cases(self, forDown, device, forPage):
adbcase = adbtest(forDown[0], device, forPage[0][0])
uicase = uitest(forDown[0], device, forPage[0][0])
info = uicase.get_info()
install_judge = adbcase.install_judge()
if install_judge is True:
log.info("APP安装成功:{};{};{}".format(device, forPage[0][0], forDown[0]))
start_judge = uicase.start_judge()
if start_judge is True:
log.info("APP启动成功:{};{};{}".format(device, forPage[0][0], forDown[0]))
run_judge = uicase.run_judge()
if run_judge is True:
log.info("APP运行成功:{};{};{}".format(device, forPage[0][0], forDown[0]))
else:
log.info("原APP无法兼容:{};{};{}".format(device, forPage[0][0], forDown[0]))
self.data.append(
{"device": device, "device_version": info[0], "device_model": info[1], "msg": "原APP无法兼容",
'img': toBase64(run_judge)})
else:
log.info("原APP无法启动:{};{};{}".format(device, forPage[0][0], forDown[0]))
self.data.append(
{"device": device, "device_version": info[0], "device_model": info[1], "msg": "原APP无法启动",
'img': None})
uninstall(device, forPage[1][0])
else:
log.info("原APP无法安装:{};{};{}".format(device, forPage[0][0], forDown[0]))
self.data.append(
{"device": device, "device_version": info[0], "device_model": info[1], "msg": "原APP无法安装", 'img': None})
def toBase64(imgDir):
with open(imgDir, 'rb') as f:
base64_data = base64.b64encode(f.read())
s = base64_data.decode()
return 'data:image/jpeg;base64,%s' % s
- runCase():
def runCase(self):
devices = findDevice()
if len(devices) == 0:
self.__callBack({"status": 1, "packName": "", "msg": "无设备"})
else:
forDown = downApk(self.oldApp, self.firmApp)
if forDown is None:
self.__callBack({"status": 1, "packName": '', "msg": "下载失败"})
else:
oldAppPage = get_apk_page(forDown[0])
if oldAppPage is None or firmAppPage is None:
self.__callBack({"status": 1, "packName": "", "msg": "包名获取失败"})
else:
ts = []
for device in devices:
ts.append(
threading.Thread(target=self.__cases, args=[forDown, device, [oldAppPage]]))
for t in ts:
t.start()
for t in ts:
t.join()
self.__callBack({"packName": oldAppPage[0], "status": 0, "msg": "测试完成", "data": self.data})