def __init__(self,driver,page_url=None,page_title=None): self.page_url=page_url self.page_title=page_title self.driver=driver self.driver.maximize_window() self.driver.implicitly_wait(30) self.Test_log=Logger()
def __init__(self): self.logger = Logger('/var/log/MediaParse_woker.log', 'debug', 'Worker') self.logger.debug('Worker init over.') self.parser = Parser() self.parser.set_parse_tool('/root/MediaParse/_release/bin/ffprobe') self.task_queue = Rqueue(name='parse_task') self.redis = redis.Redis(host='localhost', port=6379, db=0)
class Worker: def __init__(self): self.logger = Logger('/var/log/MediaParse_woker.log', 'debug', 'Worker') self.logger.debug('Worker init over.') self.parser = Parser() self.parser.set_parse_tool('/root/MediaParse/_release/bin/ffprobe') self.task_queue = Rqueue(name='parse_task') self.redis = redis.Redis(host='localhost', port=6379, db=0) def run(self): self.logger.debug('Worker run start.') while True: try: # get task task = self.get_parse_task() self.logger.debug('get task: %s.' % (task)) if task != None: self.do_parse_task(task) except Exception, ex: self.logger.error("error:%s" % (ex)) time.sleep(3) self.logger.debug('Worker run over.')
async def count(*args, **kwargs): t = time.time() start = int(round(t * 1000)) res = await func(*args, **kwargs) t = time.time() end = int(round(t * 1000)) time_length = end - start #函数消耗时间 print('length', time_length) if max <= 0 or time_length > max: log = Logger.get_log(file) log.info('function[' + func.__name__ + '],time[' + str(time_length) + ']') return res
from cali_config import CaliConfig import socket import threading from config.constant import const from calibration_control import CalibrationControl, CalibrationControlSingleton # configuration DEBUG = True # instantiate the app app = Flask(__name__) app.config.from_object(__name__) # enable CORS CORS(app, resources={r'/*': {'origins': '*'}}, supports_credentials=True) logger = Logger('calibration').getlog() def is_image_file(filename): return any(filename.endswith(extension) for extension in ['.png', '.jpg', '.jpeg', '.PNG', '.JPG', '.JPEG']) def check_conf_file(file_path): if not os.path.exists(file_path): if not os.path.exists(os.path.dirname(file_path)): os.mkdir(os.path.dirname(file_path)) src_file = '/home/wth/fabu/calibration-master_t/conf/fixed_cam_calib.conf' shutil.copy(src_file, file_path)
# -*- coding: utf-8 -*- import paramiko import time from common.Log import Logger logger = Logger("OperatorShell").getlog() class OperatorShell(object): def __init__(self, host, port, username, password): self._host = host self._port = port if port else 22 self._username = username self._password = password self._transport = None self._sftp = None self._channel = None self._client = None # 等待超时时间 self.timeout = 360000 # 连接失败的重试次数 self.try_times = 3 def _connect(self): while True: try: self._transport = paramiko.Transport((self._host, self._port)) # 用户名密码方式 self._transport.connect(username=self._username, password=self._password)
# -*- coding: utf-8 -*- # @Time : 2021/4/12 下午3:28 # @Author : wth import os import subprocess from ssh.base_command import BaseCommand from common.Log import Logger from config.constant import const logger = Logger('DRSUEnv').getlog() class DRSUEnv(object): def __init__( self, project_name, drsu_id, tar_dir, root_dir, remote_host, remote_port, remote_path, froce, username='******', password='******', ): """ 从远端服务器下载标定数据的压缩文件,解压后存放到标定程序文件夹中的指定路径下 Args: project_name:项目名称 e.g:xiaoshan drsu_id:drsuid e.g:1
@File : analysis_whole.py @Author : 王白熊 @Data : 2020/11/10 15:30 """ import glob import os import pandas as pd import time from common.Log import Logger import numpy as np import matplotlib.pyplot as plt from project.data_analysis.analysis_acu import TrackAcu from project.data_analysis.analysis_drsu import DrsuScene from project.data_analysis.constant import const logger = Logger('analysis_scene').getlog() plt.rcParams['font.sans-serif'] = ['SimHei'] # 正常显示中文标签 plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号 List_style = ['-', '--', '-.', ':'] Listcolors = [ 'red', 'blue', 'green', 'cyan', 'magenta', 'orange', 'darkred', 'black' ] class AnalysisData(): def __init__(self, file_path, ort=True): if not os.path.exists(file_path): raise FileNotFoundError('数据文件夹:%s不存在' % file_path) self.file_path = file_path self.data = [] self.index = 0
def __init__(self): self.log = Logger.get_log() self.logger = self.log.get_logger() self.browser = webdriver.Chrome()
from common.Log import Logger from common.configHttp import ConfigHttp from common.commons import Readkey import readConfig red = readConfig.ReadConfig() http = ConfigHttp() log = Logger() logger = log.get_logger() keys = Readkey() try: value = keys.get_xls('login.xlsx', 'user') user_phone = int(value[0][0]) user_password = int(value[0][1]) http.set_data( data={ 'lang': 'zh-CN', 'userId': '', 'token': '', 'companyId': '', 'country': '', 'phone': user_phone, 'password': user_password }) http.set_url('/sysUser/login') ts = http.post().json() for key, vl in ts['datas'].items(): # 写入到配置文件 red.set_user(str(key), str(vl)) except Exception as e:
# -*- coding: utf-8 -*- """ @Project : test_code @File : temp_test.py @Author : 王白熊 @Data : 2020/12/4 10:18 """ from ssh.drsu_ssh import DrsuSSHConnection from common.Log import Logger import time import re import xlwt import threading from xlwt import Font, XFStyle logger = Logger('temperature').getlog() senior_name = ['camera0', 'camera1', 'radar', 'ai_out'] lock = threading.Lock() class DrsuSSHConnectionTemp(DrsuSSHConnection): # b'20201204 11:19:02.391790[607826]_AI_DATA0:INF:L0180:ai_data_notify_cameradp_msg:ai notify cameradp msg, \x1b[01;31m\x1b[KulAidataNO(0)\x1b[m\x1b[K, CameraFrameCount(43201)\r' # 20201204 11:19:02.391790[607826]_AI_DATA0:INF # [:8] # [9:17] # [18: 24] # 保证不会出现多个线程对同一个地方写,所以就不加线程锁了 def __init__(self, drsu_id, is_sim, drc_id, encode='utf-8'): DrsuSSHConnection.__init__( self,
# coding:utf-8 import csv import pandas as pd import re import json import os import matplotlib.pyplot as plt import argparse import sys from common.Log import Logger import time logger = Logger('csv_').getlog() ACU_FILE_PATH_ERROR = 0 DRSU_FILE_PATH_ERROR = 1 FLAG = 2 strmatchcell = "HandleAcuVehicleState:vehicle state: " fresult = open(r'D:\pycharm_ws\clip_csv_data\test\40.csv', 'w') drsu_data = pd.DataFrame() drsu_data_new = pd.DataFrame(columns=[ 'ulFrame', 'ulSubFrame', 'dbTimestamp', 'stCenter.dbx', 'stCenter.dby', 'stCenter.dbz', 'stvelocity.dbx', 'stvelocity.dby', 'stvelocity.dbz', 'dblength', 'dbwidth', 'dbheight', 'ulLocalDrsuID', 'stObj_type', 'aulLane', 'acu_db_time_stamp', 'acu_st_coordicate_dbx', 'acu_st_coordicate_dby', 'acu_st_coordicate_dbz', 'acu_st_line_speed_x', 'acu_st_line_speed_y', 'acu_st_line_speed_z' ])
import time from selenium.common.exceptions import NoSuchElementException import os.path import configparser from common.Log import Logger from selenium.webdriver.common.keys import Keys from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support import ui from selenium.webdriver.common.by import By from selenium.webdriver.common.action_chains import ActionChains import win32gui import win32con # create a logger instance logger = Logger("BasePage").getlog() class BasePage(object): """ 定义一个页面基类,让所有页面都继承这个类,封装一些常用的页面操作方法到这个类 """ def __init__(self, driver): self.driver = driver config = configparser.ConfigParser() # file_path = os.path.dirname(os.getcwd()) + '/config/config.ini' file_path = os.path.dirname( os.path.abspath('.')) + '/config/config.ini' config.read(file_path) # config.read(file_path,encoding='UTF-8'), 如果代码有中文注释,用这个,不然报解码错误 self.url = config.get("testServer", "URL") # quit browser and end testing
# @Software: PyCharm import os import unittest import ddt import requests requests.packages.urllib3.disable_warnings() from common.Log import Logger from common.Encapsulation_Excel import readExcel from common.write_Excel import copy_Excel from common.Request_ import send_request #日志 logger = Logger(logger='testCase').getlog() #获取old_Excel路径 old_Ex = os.path.dirname(os.getcwd()) + '\The_test_case\interfaceTest.xlsx' #获取new_Excel路径 new_Ex = os.path.dirname(os.getcwd()) + '\The_test_case\q2.xlsx' #执行Excel文件 testdata = readExcel(old_Ex).read_dict_data() @ddt.ddt class jie(unittest.TestCase): @classmethod def setUpClass(cls): cls.s = requests.session() logger.info("开始测试") copy_Excel(old_Ex, new_Ex)
from api_test.base_page.homepage import HomePage from common.Log import Logger from selenium.webdriver.support.select import Select logger = Logger("AcuDevMgrSpecCfgPage").getlog() # acu设备配置可以同时制定多个设备 # 该页面点击取消或者弹窗告警确认之后会回到AcuDevMgrPage class AcuDevMgrSpecCfgPage(HomePage): # 选择状态上报周期 100 200 500 1000 def choose_status_report_unit(self, value): sel = self.find_element('xpath=>//*[@id="ulPeriodOfSatusRpt"]') self.wait(2) Select(sel).select_by_value(str(value)) # 选择告警上报周期 10 30 self.sixty def choose_alarm_report_unit(self, value): sel = self.find_element('xpath=>//*[@id="ulPeriodOfAlarmRpt"]') self.wait(2) Select(sel).select_by_value(str(value)) # 选择车辆信息上报周期 100 200 500 1000 def choose_car_info_report_unit(self, value): sel = self.find_element('xpath=>//*[@id="ulPeriodofInfo"]') self.wait(2) Select(sel).select_by_value(str(value)) # 点击取消 def cancel_click(self):
from api_test.base_page.homepage import HomePage from common.Log import Logger from selenium.webdriver.support.select import Select logger = Logger("WorkOrderMgrPage").getlog() class WorkOrderMgrPage(HomePage): # 输入工单编号 def input_work_order_num(self, num): link = 'xpath=>//*[@id="query_WorkOrderNumber"]' self.type(link, str(num)) # 输入工单名称 def input_work_order_name(self, name): link = 'xpath=>//*[@id="query_WorkOrderName"]' self.type(link, str(name)) # 输入工单负责人 def input_work_order_owner(self, owner): link = 'xpath=>//*[@id="query_WorkOrderPrincipal"]' self.type(link, str(owner)) # 输入工单发起人 def input_work_order_submitter(self, submitter): link = 'xpath=>//*[@id="query_WorkOrderInitiator"]' self.type(link, str(submitter)) # 输入开始时间 def input_start_time(self, time):
@Data : 2020/10/30 15:17 """ import re import json import os import pandas as pd import numpy as np from project.data_analysis.constant import const from scipy import optimize from common.Log import Logger import glob import time import re logger = Logger('AnalysisAcu').getlog() strmatchcell = "HandleAcuVehicleState:vehicle state: " def target_func(x, A, B): return A * x + B # ACU轨迹 class TrackAcu(object): # ort表示道路是否为x方向 def __init__(self, file_path, ort=True): if not os.path.exists(file_path): self.track_type = 0 index = int(os.path.dirname(file_path)[-2:])
from api_test.base_page.homepage import HomePage from common.Log import Logger logger = Logger("AcuDevMgrAddPage").getlog() # 该页面点击取消或者弹窗告警确认之后会回到AcuDevMgrPage class AcuDevMgrAddPage(HomePage): # 填写ACU所属DRC_ID def input_drc_id(self, drc_id): input_drc_id_link = 'xpath=>//*[@id="drcGlobeId"]' self.type(input_drc_id_link, str(drc_id)) # 填写ACU系统唯一标识 def input_acu_id(self, acu_id): input_acu_id_link = 'xpath=>//*[@id="ulGlobalAcuId"]' self.type(input_acu_id_link, str(acu_id)) # 填写所属发动机号 def input_engine_no(self, engine_no): engine_no_link = 'xpath=>//*[@id="sAcuEngineSerialNum"]' self.type(engine_no_link, str(engine_no)) # 填写所属车牌号 def input_car_no(self, car_id): car_id_link = 'xpath=>//*[@id="sPlateNumber"]' self.type(car_id_link, str(car_id)) # 点击取消
from api_test.base_page.homepage import HomePage from common.Log import Logger logger = Logger("AcuDevMgrSpecQryPage").getlog() # acu设备配置可以同时制定多个设备 # 该页面点击取消或者弹窗告警确认之后会回到AcuDevMgrPage # 该页面点击设备配置之后会跳到AcuDevMgrSpecCfgPage class AcuDevMgrSpecQryPage(HomePage): # 点击刷新 # def refresh_click(self): # refresh_link = 'xpath=>/html/body/div[1]/div/div[3]/div[2]/div/div/div/div/div[2]/div[1]/div[2]/button' # # refresh_link = 'name="refresh"' # self.click(refresh_link) # 点击全屏 def full_screen_click(self): full_screen_link = 'xpath=>/html/body/div[1]/div/div[3]/div/div/div/div[2]/div/div/div[2]/div[1]/div[' \ '2]/div/button ' self.click(full_screen_link) # 点击返回ACU管理 def return_click(self): return_link = 'xpath=>//*[@id="btn_return"]' self.click(return_link) # 点击设备配置 def dev_cfg_click(self): dev_cfg_link = 'xpath=>//*[@id="btn_config"]'
# -*- coding: utf-8 -*- ''' @Project : test_code @File : web_config.py @Author : 王白熊 @Data : 2020/10/13 16:35 ''' from config.base_config import Config from common.Log import Logger logger = Logger('Web_Config').getlog() class Web_Config(Config): def __init__(self, config_file='web_config.ini'): super().__init__(config_file) @property def username(self): return self.get_value('user', 'username') @property def password(self): return self.get_value('user', 'password') @property def browserName(self): return self.get_value('browserType', 'browserName') @property
from common.Log import Logger logger = Logger() log = logger.get_logger() logger.error('dddddddddd')
from api_test.base_page.homepage import HomePage from common.Log import Logger from selenium.webdriver.support.select import Select logger = Logger("AlarmHtyMgrPage").getlog() class AlarmHtyMgrPage(HomePage): # 告警码输入 def input_alarm_no(self, alarm_no): input_alarm_no_link = 'xpath=>//*[@id="ulAlarmNo"]' self.type(input_alarm_no_link, str(alarm_no)) # 输入告警处理措施描述 def input_alarm_description(self, txt): input_dev_id_link = 'xpath=>//*[@id="alarmDescriptionTxt"]' self.type(input_dev_id_link, str(txt)) # 点击查询 def alarm_qry_click(self): alarm_qry_link = 'xpath=>//*[@id="btn_query"]' self.click(alarm_qry_link) def return_click(self): link = 'xpath=>//*[@id="btn_return"]' self.click(link) # 点击刷新 def refresh_click(self): refresh_link = 'xpath=/html/body/div[1]/div[1]/div[3]/div[2]/div/div[2]/div/div/div[2]/div[1]/div[2]/button'
from api_test.base_page.homepage import HomePage from common.Log import Logger from selenium.webdriver.support.select import Select logger = Logger("DrsuVerMgrPage").getlog() class DrsuVerMgrPage(HomePage): # 填入版本名称 后面还有一个输入版本名称 注意不要混淆 def input_drsu_version_name(self, version_name): input_version_link = 'xpath=>//*[@id="Term"]' self.type(input_version_link, version_name) # 点击查询 def qry_click(self): qry_link = 'xpath=>//*[@id="btn_query"]' self.click(qry_link) # 选择DRC_ID def choose_drc_id(self, drc_id): sel = self.find_element('xpath=>//*[@id="drcChoiceListId"]') self.wait(1) Select(sel).select_by_value('%s' % str(drc_id)) # 选择DRC_ID def choose_drsu_id(self, drc_id): sel = self.find_element('xpath=>//*[@id="drsuChoiceListId"]') self.wait(1) Select(sel).select_by_value('%s' % str(drc_id))
# -*- coding: utf-8 -*- import time from common.Log import Logger from ssh.operator_shell import OperatorShell logger = Logger("BaseCommand").getlog() class BaseCommand(OperatorShell): def __init__(self, host, port, username, password): super().__init__(host, port, username, password) # 删除文件 使用小心! def del_file(self, file_path): command = 'rm -rf ' + file_path logger.warning('删除文件:%s' % file_path) self.exec_command_no_readout(command) # 查找指定文件指定字符串 def query_str(self, file_name, query_str): query_command = 'cat ' + file_name + ' | grep ' + query_str ret_str = self.exec_command_retstr(query_command) logger.debug('输入命令:%s,\r\n 返回值:%s' % (query_command, ret_str)) return ret_str # 判断文件是否存在 def is_exist_file(self, file_path): command = 'ls {} | wc -l'.format(file_path) if int(self.exec_command_retstr(command)) != 0: return True else:
# -*- coding: utf-8 -*- # @Time : 2021/2/22 下午3:33 # @Author : wth import time from proto import lidar_camera_cross_calibration_config_pb2 from proto import sensor_source_pb2 from google.protobuf import text_format from google.protobuf.json_format import MessageToJson from common.Log import Logger logger = Logger('CaliConfig').getlog() class CaliConfig(object): def __init__(self, src_file, dest_file=None): """ Args: src_file: 读取配置文件地址 dest_file: 保存配置文件地址 """ self._conf_file = src_file self._save_file = dest_file if dest_file else src_file self._config = self._get_conf() def _save_conf(self): with open(self._save_file, "w+") as f: f.write(text_format.MessageToString(self._config)) # 只对filter的中间结果备份 def _bk_conf(self, mode, device_id): if mode != 'filter':
from api_test.base_page.homepage import HomePage from common.Log import Logger from selenium.webdriver.support.select import Select logger = Logger("DrsuDevMgrAllQryPage").getlog() drsu_sub_dev_para_tup = ('drsu身份识别', '子设备编号', '设备型号', '子设备版本', '数据上报周期', '告警上报周期', '障碍物算法') # acu设备配置可以同时制定多个设备 # 该页面点击取消或者弹窗告警确认之后会回到AcuDevMgrPage # 该页面点击设备配置之后会跳到AcuDevMgrSpecCfgPage class DrsuDevMgrAllQryPage(HomePage): # 点击刷新 # def refresh_click(self): # refresh_link = 'xpath=>/html/body/div[1]/div/div[3]/div[2]/div/div/div/div/div[2]/div[1]/div[2]/button' # # refresh_link = 'name="refresh"' # self.click(refresh_link) # 点击全屏 def full_screen_click(self): full_screen_link = 'xpath=>/html/body/div/div/div[3]/div[2]/div/div/div/div/div[2]/div[1]/div[2]/div/button' self.click(full_screen_link) # 点击返回 def return_click(self): return_link = 'xpath=>//*[@id="btn_config"]' self.click(return_link)
from testFile.readExcel import readExcel from common.Log import Logger logname = Logger.logpath() log = Logger(logname, level='debug') login_xls = readExcel.get_xls(xls_name='userCase.xlsx', sheet_name='test') def signa(): cls = readExcel().get_xls('userCase.xlsx', 'test') str = cls[0] print(str.get('case_name')) if __name__ == '__main__': signa()
from api_test.base_page.homepage import HomePage from common.Log import Logger from selenium.webdriver.support.select import Select logger = Logger("EventLogPage").getlog() class EventLogPage(HomePage): # 点击刷新 def refresh_click(self): refresh_link = 'xpath=>//*[@id="vueApp"]/div[2]/div/div/div/div/div[1]/div[1]/div[2]/button' self.click(refresh_link) # 点击搜索 def search_click(self): search_link = 'xpath=>//*[@id="vueApp"]/div[1]/div[2]/div[1]/div/button' self.click(search_link) # 输入搜索 def input_search(self, value): # //*[@id="vueApp"]/div[2]/div/div/div/div[1]/div[1]/div[3]/input link = 'xpath=>//*[@id="vueApp"]/div[2]/div/div/div/div/div[1]/div[1]/div[3]/input' self.type(link, str(value)) # 输入时间范围 def input_time_frame(self, days): # //*[@id="vueApp"]/div[1]/div[2]/div[2]/div/form[1]/div[1]/div/div/input link = 'xpath=>//*[@id="vueApp"]/div[1]/div[2]/div[2]/div/form/div[1]/div/div/div/input' self.type(link, str(days))
from api_test.base_page.homepage import HomePage from common.Log import Logger from selenium.webdriver.support.select import Select logger = Logger("AcuStatMgrPage").getlog() class AcuStatMgrPage(HomePage): # ACU身份标识填写 def choose_acu_by_id(self, deviceid): choose_acu_link = 'xpath=>//*[@id="Term"]' self.type(choose_acu_link, str(deviceid)) # 在线状态选择 'null'全部;'0'上线;'1'下线,默认为全部 def choose_status(self, value): sel = self.find_element('xpath=>//*[@id="LocatfffionDesc"]') self.wait(2) Select(sel).select_by_value('%s' % str(value)) # 点击刷新 def refresh_click(self): refresh_link = 'xpath=>/html/body/div[1]/div[1]/div[3]/div[2]/div/div[2]/div/div/div[2]/div[1]/div[2]/button' self.click(refresh_link) # 点击全屏 def full_screen_click(self): full_screen_link = 'xpath=>/html/body/div[1]/div[1]/div[3]/div[2]/div/div[2]/div/div/div[2]/div[1]/div[' \ '2]/div/button ' self.click(full_screen_link)
import os import time from selenium.common.exceptions import NoSuchElementException import os.path import configparser from common.Log import Logger from selenium.webdriver.common.keys import Keys from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support import ui from selenium.webdriver.common.by import By from selenium.webdriver.common.action_chains import ActionChains from common.Log import Logger logger = Logger('reference_flush').getlog() class BasePage(object): """ 定义一个页面基类,让所有页面都继承这个类,封装一些常用的页面操作方法到这个类 """ def __init__(self, driver): self.driver = driver # quit browser and end testing def quit_browser(self): self.driver.quit() # 浏览器前进操作 def forward(self): self.driver.forward() logger.debug("Click forward on current page.")