import os import sys import time from robot.api import ExecutionResult import subprocess import json
json_template = { "appName": "project_name", "source" : "CRPCI", "arch": "amd64", "buildLocaltion":"wuhan", "checkName": "ATtest", "checkResult":"0,0,0%", "checkStatus": "success", "buildURL" : "jenkins构建地址", "startTime": time.time(), "endTime": time.time(), "version": "1050" }
def get_code(): command="git submodule update --init --recursive && cd dbus_autotest && git checkout dev-gsetting-1050 && cd ../dde_robot && git checkout dev-1050" os.system(command)
def execute_gsetting_job(project_name): command="cd dbus_autotest && python3 pytest_runner.py -md" + project_name os.system(command)
def execute_robot_job(project_name): command="cd dde_robot/tools && bash ci_run_robot.sh %sAND1050 2 ||true" % project_name os.system(command)
def analysis_robot_report(): os.system('pwd') pwd = os.getcwd() xml_path = pwd + '/dde_robot/tests/robot/output.xml' print(xml_path) suite = ExecutionResult(xml_path).suite allTests = suite.statistics.all return allTests
def analysis_dbus_report(): pwd = os.getcwd() csv_path = pwd + '/dbus_autotest/allure-report/data/suites.csv' print(csv_path) passed_command = 'grep -w passed %s | wc -l' % csv_path failed_command = 'grep -w failed %s | wc -l' % csv_path broken_command = 'grep -w broken %s | wc -l' % csv_path passed = subprocess.getoutput(passed_command) failed = subprocess.getoutput(failed_command) broken = subprocess.getoutput(broken_command) return passed, failed, broken
def analysis_report(project_name, json_template): robot_report = analysis_robot_report() robot_passed = int(robot_report.passed) robot_failed = int(robot_report.failed) robot_total = int(robot_report.total) dbus_passed = int(analysis_dbus_report()[0]) dbus_failed = int(analysis_dbus_report()[1]) dbus_broken = int(analysis_dbus_report()[2]) dbus_total = dbus_passed + dbus_failed + dbus_broken report_failed = robot_failed + dbus_failed report_total = robot_total + dbus_total report_failed_rate = str('%.1f' % (report_failed / report_total)) + '%' data = '%s,%s,%s' % (str(report_failed), str(report_total), report_failed_rate) json_template["appName"] = project_name json_template["checkResult"] = data json_tem = json.dumps(json_template) print(json_tem) file_name = project_name + '_at.json' with open(file_name, 'w') as f: f.write(json_tem)
if __name__=="__main__": if sys.argv[1] == "dde-dock": execute_robot_job("dock") execute_gsetting_job("gsettings_dock") analysis_report("dde-dock", json_template) elif sys.argv[1] == "dde-control-center": execute_robot_job("dcc") execute_gsetting_job("gsettings_control_center") analysis_report("dcc", json_template) elif sys.argv[1] == "dde-launcher": execute_robot_job("launcher") execute_gsetting_job("gsettings_launcher") analysis_report("dde-launcher", json_template) else: print("please enter correct project name")