12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import json
- import os
- import datetime
- import atexit
- from ssat_sdk.uiautomator2 import UIAutomatorServer
- from ssat_sdk.uiautomator2.ext.info import conf
- class Info(object):
- def __init__(self, driver, package_name=None):
- self._driver = driver
- self.output_dir = 'report/'
- self.pkg_name = package_name
- self.test_info = {}
- atexit.register(self.write_info)
- def read_file(self, filename):
- try:
- with open(self.output_dir + filename, 'r') as f:
- return f.read()
- except IOError as e:
- print(os.strerror(e.errno))
- def get_basic_info(self):
- device_info = self._driver.device_info
- app_info = self._driver.app_info(self.pkg_name)
- # query for exact model info
- if device_info['model'] in conf.phones:
- device_info['model'] = conf.phones[device_info['model']]
- self.test_info['basic_info'] = {'device_info': device_info, 'app_info': app_info}
- def get_app_icon(self):
- icon = self._driver.app_icon(self.pkg_name)
- icon.save(self.output_dir + 'icon.png')
- def get_record_info(self):
- record = json.loads(self.read_file('record.json'))
- steps = len(record['steps'])
- start_time = datetime.datetime.strptime(record['steps'][0]['time'],
- '%H:%M:%S')
- end_time = datetime.datetime.strptime(
- record['steps'][steps - 1]['time'], '%H:%M:%S')
- total_time = end_time - start_time
- self.test_info['record_info'] = {
- 'steps': steps,
- 'start_time': record['steps'][0]['time'],
- 'total_time': str(total_time)
- }
- def get_result_info(self):
- log = self.read_file('log.txt')
- trace_list = []
- if log:
- log = log.splitlines()
- for i in range(len(log)):
- if 'Traceback' in log[i]:
- new_trace = log[i]
- i += 1
- while 'File' in log[i]:
- new_trace += '\n' + log[i]
- i += 1
- new_trace += '\n' + log[i]
- trace_list.append(new_trace)
- self.test_info['trace_info'] = {
- 'trace_count': len(trace_list),
- 'trace_list': trace_list
- }
- def start(self):
- self.get_basic_info()
- self.get_app_icon()
- def write_info(self):
- # self.get_basic_info()
- self.get_record_info()
- self.get_result_info()
- with open(self.output_dir + 'info.json', 'wb') as f:
- f.write(json.dumps(self.test_info))
|