示例#1
0
    def __new__(cls, config_file_address=systemConfig):
        try:
            if not hasattr(cls, 'config'):
                # 创建属性&在属性下命名数值
                cls.config = super(Config, cls).__new__(cls)
                open_config = configparser.ConfigParser()
                open_config.read(config_file_address)

                # 通过config获取数据
                cls.config.login_mode = open_config.get(
                    'loginMode', 'loginMode')
                cls.config.cookie = open_config.get('cookie', 'cookie')
                cls.config.environment = open_config.get(
                    'environment', 'environment')

                # 通过判断配置中的环境变量来读取使用环境
                cls.config.database = (open_config.get(cls.config.environment,
                                                       'database')).split(",")
                cls.config.url = open_config.get(cls.config.environment, 'URL')
                cls.config.userneme = open_config.get(cls.config.environment,
                                                      'userneme')
        except Exception as err:
            logger.error('出现错误%s' % err)
        else:
            logger.debug('类:Config,完成初始化')
        return cls.config
示例#2
0
    def __init__(self):
        super(PostData, self).__init__()
        # 创建session
        self.itas_session = requests.Session()
        try:
            if self.login_mode == 'login':
                # 连接数据查询登录用户的密码&组装首次登录post data
                connect_oracle = Oracle(*self.database)
                connect_oracle.first_login_function = self.userneme
                password = connect_oracle.first_login_function
                first_login_data = {
                    'username': self.userneme,
                    'password': password,
                    'language': ''
                }

                # 创建session
                aa = self.itas_session.post(url=(self.url + "/ITAS/login"),
                                            data=first_login_data)
                print(aa.text)
                # 可以对此次传输的cookie进行存放,此方法与cookie方式类似
                self.JSESSIONID = self.itas_session.cookies.get('JSESSIONID')

            # cookie方式,直接将cookie添加到headers
            elif self.login_mode == 'cookie':
                logger.debug('cookie 登录方式')
            else:
                raise ValueError('login Mode方式设置错误')
        except Exception as err:
            logger.error('初始化出现错误:%s' % err)
        else:
            logger.debug('类:PostData,完成初始化')
示例#3
0
    def send_email_function(self):
        try:
            email_multipart = MIMEMultipart('related')
            email_multipart['Subject'] = '测试结果' + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())

            email_attach01 = MIMEText(open(self.dataExcel, 'rb').read(), _subtype='base64', _charset='utf-8')
            email_attach01['Content-Type'] = 'application/octet-stream'
            email_attach01['Content-Disposition'] = 'attachment; filename="data.xlsx"'

            email_attach02 = MIMEText(open(self.excel_result_address, 'rb').read(), _subtype='base64', _charset='utf-8')
            email_attach02['Content-Type'] = 'application/octet-stream'
            email_attach02['Content-Disposition'] = 'attachment; filename="result.xlsx"'

            email_text = MIMEText('大家好:' + '\n' + '\n'
                                  '这是一封自动发送的邮件,邮件内容是本次接口测试的结果,'
                                  '请查看,如有问题请与我联系。')

            email_multipart.attach(email_attach01)
            email_multipart.attach(email_attach02)
            email_multipart.attach(email_text)

            send_function = smtplib.SMTP()
            send_function.connect(host=self.host, port=self.port)
            send_function.login(user=self.senderAndUsername, password=self.password)
            send_function.sendmail(from_addr=self.senderAndUsername,
                                   to_addrs=self.receiver, msg=email_multipart.as_string())
            send_function.quit()
        except Exception as err:
            logger.exception(err, exc_info=True)
        else:
            logger.debug('email初始化完成')
示例#4
0
    def __init__(self):
        # 字体
        excel_font = xlwt.Font()
        excel_font.name = 'Arial'

        # 边框
        excel_borders = xlwt.Borders()
        excel_borders.bottom = excel_borders.left = excel_borders.right = excel_borders.top = 1

        # 对齐方式
        excel_alignment = xlwt.Alignment()
        excel_alignment.horz = xlwt.Alignment.HORZ_LEFT
        excel_alignment.vert = xlwt.Alignment.VERT_TOP
        excel_alignment.wrap = xlwt.Alignment.WRAP_AT_RIGHT

        # 样式整合
        excel_style = xlwt.XFStyle()
        excel_style.alignment = excel_alignment
        excel_style.font = excel_font
        excel_style.borders = excel_borders

        # 初始化excel格式
        self.excelBorders = excel_borders
        self.excelFont = excel_font
        self.excelAlignment = excel_alignment
        self.style = excel_style
        logger.debug('完成类:ExcelStyle初始化')
示例#5
0
def replace_data(row_data):
    """
    :param row_data: 输入具体行数据
    :return: 对于2, 3, 4, 5, 8这几行数据进行eval操作,若为空返回相应数据类型
    """
    try:
        if isinstance(row_data, list):
            replace_list = [2, 3, 4, 5, 8]
            for i in replace_list:
                if row_data[i] != '':
                    row_data[i] = eval(row_data[i])
                elif row_data[i] == '' and (i == 2):
                    row_data[i] = list()
                elif row_data[i] == '' and (i == 5):
                    row_data[i] = tuple()
                elif row_data[i] == '' and (i == 3 or i == 4 or i == 8):
                    row_data[i] = dict()
                else:
                    raise ValueError('恢复数据类型存在错误')
        else:
            raise ValueError('row data存在错误')
    except Exception as err:
        logger.error('函数:replace data,存在错误:%s' % err)
    else:
        logger.debug('函数:replace data,完成操作')
    return row_data
示例#6
0
 def get_sheet_rows(self):
     for sheet in self.all_sheet:
         open_sheet = self.open_excel.sheet_by_name(sheet)
         row = open_sheet.nrows
         # print(row)
         self.dict_name_rows[sheet] = row
     logger.debug('获取sheet名称与行数字典,%s' % self.dict_name_rows)
     return self.dict_name_rows
示例#7
0
 def style_function(self, fore_colour=None):
     style = deepcopy(self.style)
     if fore_colour not in ([None, '']):
         patterni = xlwt.Pattern()
         patterni.pattern = 1
         patterni.pattern_fore_colour = fore_colour
         style.pattern = patterni
     logger.debug('完成背景颜色赋值,背景颜色值:%d' % fore_colour)
     return style
示例#8
0
 def get_sheets(self):
     # 对传入值self.openExcel进行判断
     if not isinstance(self.open_excel,
                       xlrd.book.Book) and self.open_excel is None:
         raise '%s:存在错误' % self.open_excel
     try:
         self.all_sheet = self.open_excel.sheet_names()
     except Exception as err:
         logger.error('函数getSheets,出现错误:%s' % err)
     else:
         logger.debug('class: ReadExcel;function:getSheets. .over')
     return self.all_sheet
示例#9
0
 def __init__(self, http_response, *assert_data):
     logger.debug('class:AssertRegular,httpResponse:%s ,assertData:%s' % (http_response, assert_data))
     super(AssertRegular, self).__init__()
     try:
         if not isinstance(assert_data, tuple):
             raise ValueError('Assert Regular class ,assertData 存在问题')
         self.code = http_response.status_code
         self.text = http_response.text
         self.header = http_response.headers
         self.regularExp = assert_data
     except Exception as err:
         logger.error('__init__:%s' % err)
示例#10
0
 def __init__(self, file_name, till_name):
     ReadExcel.__init__(self, file_name=file_name)
     # super(WriteExcel ,self).__init__(fileName=filename)
     ReadExcel.get_sheet_name_number(self)
     ExcelStyle.__init__(self)
     try:
         self.copyExcel = xlutils.copy.copy(self.open_excel)
         sheet_number = self.D1[till_name]
         self.get_sheet = self.copyExcel.get_sheet(sheetnum=sheet_number)
     except Exception as err:
         logger.error('writeData Function 存在问题:%s' % err)
     logger.debug('类:WriteExcel,完成初始化')
示例#11
0
 def __init__(self, **list_first_data):
     logger.debug("类:Oracle,接收数据list first data:%s" % str(list_first_data))
     self.password = None
     if not isinstance(list_first_data, dict):
         raise ValueError('%s do not a dict.' % list_first_data)
     try:
         dns = cx_Oracle.makedsn(list_first_data['url'], list_first_data['port'], list_first_data['oracle_name'])
         self.oracle_connection = cx_Oracle.Connection(list_first_data['username'], list_first_data['password'], dns)
         self.oracle_cursor = cx_Oracle.Cursor(self.oracle_connection)
     except Exception as err:
         logger.error('Oracle():%s' % err)
     else:
         logger.debug('类:Oracle,完成初始化')
示例#12
0
    def __init__(self, file_name):
        logger.debug('ReadExcel:(%s)' % file_name)
        self.file_name = file_name
        self.D1 = dict()
        self.all_sheet = None

        # 判定filename是否为空或无值
        try:
            if self.file_name is None:
                raise "fileName:%s 不能为空" % file_name
            self.open_excel = xlrd.open_workbook(filename=file_name,
                                                 formatting_info=True)
        except Exception as err:
            logger.error('ReadExcel初始化,出现错误:%s' % err)
示例#13
0
 def __init__(self, file_name, result_address):
     ReadSheet.__init__(self, file_name)
     ExcelStyle.__init__(self)
     self.result_address = result_address
     self.resultName = 'result'
     self.currentTime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
     try:
         self.excel_workbook = xlwt.Workbook()
         self.add_result_sheet = self.excel_workbook.add_sheet(
             sheetname=self.resultName, cell_overwrite_ok=True)
         # excelWorkbook.save(self.resultAddress)
     except Exception as err:
         logger.error(err)
     else:
         logger.debug('class:ExcelResultStatistics,初始化完毕')
示例#14
0
 def get_sheet_name_number(self):
     # 对传入值self.openExcel进行判断
     # print(self.open_excel)
     if not isinstance(self.open_excel,
                       xlrd.book.Book) and self.open_excel is None:
         raise '%s:存在错误' % self.open_excel
     try:
         all_sheet = self.open_excel.sheets()
         for i in all_sheet:
             self.D1[i.name] = i.number
     except Exception as err:
         logger.error('函数出现错误:getSheetNameNumber%s' % err)
     else:
         logger.debug('class: ReadExcel;funciton:getSheets. .over;D1=%s' %
                      self.D1)
     return self.D1
示例#15
0
 def find_tem_function(self, *data, **post_data):
     logger.debug('findTemFunction函数,data:%s ,Post data:%s' % (str(data), str(post_data)))
     try:
         if data == ():
             post_data = post_data
             find_data_dict = data
         else:
             read_tem = open(self.file_address, 'r')
             # print(self.fileAddress)
             read_tem_data = eval(read_tem.read())
             find_data_dict = dict()
             for i in data:
                 post_data[i] = read_tem_data[i]
                 find_data_dict[i] = read_tem_data[i]
                 read_tem.close()
         return post_data, find_data_dict
     except Exception as err:
         logger.error('findTemFunction:', err)
示例#16
0
    def post_data_function(self, http_mode, url_path, data, post_header):
        # 组装登录所用
        all_url = self.url + url_path
        update_headers = dict()
        post_data_variable = None
        try:
            if not isinstance(data, dict):
                post_data = eval(data)
            else:
                post_data = data
            # 按照不同的测试Mode进行数据发送
            if self.login_mode == 'cookie':
                update_headers = {'cookie': 'JSESSIONID=' + self.cookie}
                update_headers.update(post_header)
            elif self.login_mode == 'login':
                update_headers = {'cookie': 'JSESSIONID=' + self.JSESSIONID}
                update_headers.update(post_header)
            else:
                logger.error('函数:post_data_function  login mode:%s存在错误' %
                             self.login_mode)
            print(all_url, post_data, update_headers)
            # logger.debug(all_url, str(post_data), str(update_headers))

            if http_mode == 'Post':
                post_data_variable = self.itas_session.post(
                    url=all_url, data=post_data, headers=update_headers)
            elif http_mode == 'Get':
                post_data_variable = self.itas_session.get(
                    url=all_url, data=post_data, headers=update_headers)
            else:
                post_data_variable = None
                raise ValueError('http_mode')
            print(post_data_variable.text)
            logger.debug(post_data_variable.text)
        except Exception as err:
            logger.error(' 出现错误%s' % err)
        else:
            logger.debug('方法:postDataFunction,完成初始化。')
        return post_data_variable
示例#17
0
 def statistics_function(self, col, start_row):
     self.result_excel_initialization()
     logger.debug('完成统计结果excel初始化')
     for x in range(0, len(self.all_sheet)):
         try:
             open_sheet = self.open_excel.sheet_by_name(self.all_sheet[x])
             pass_or_fail_list = open_sheet.col_values(colx=col,
                                                       start_rowx=start_row)
             pass_sum = pass_or_fail_list.count('Pass')
             fail_sum = pass_or_fail_list.count('Fail')
             pass_rate = str('%.1f' % ((pass_sum /
                                        (pass_sum + fail_sum)) * 100)) + '%'
             sheet_name_statistics_result = [
                 self.all_sheet[x], pass_sum, fail_sum, pass_sum + fail_sum,
                 pass_rate
             ]
             for y in range(0, 5):
                 self.add_result_sheet.write(
                     x + 2, y, sheet_name_statistics_result[y], self.style)
         except Exception as err:
             logger.error(err)
             continue
示例#18
0
    def write_data(self, row, col, data):
        logger.debug('接收数据,row:%s,col:%s,data:%s' % (row, col, data))
        fore_colour = None
        # 对第8列进行判定,添加背景颜色 红色:2、绿色:3
        if int(col) == 7 and str(data) != str():
            if str(data) == 'Pass':
                fore_colour = 3
            elif str(data) == 'Fail':
                fore_colour = 2
            excel_style = self.style_function(fore_colour=fore_colour)
        else:
            excel_style = self.style

        # 判定写入数据是否为空,为空时不写入
        if str(data) not in (['[]', '{}', '()', None, '']):

            # 判断data类型,若不是str类型进行转换后写入
            if not isinstance(data, str):
                data = str(data)
            self.get_sheet.write(row, col, data, style=excel_style)

        # 若填写数据是一个空字段/元祖/列表,将不想EXCEL写入
        else:
            pass
示例#19
0
 def __init__(self, filename, sheet_name):
     self.start_row = 0
     open_excel = xlrd.open_workbook(filename)
     self.open_sheet_name = open_excel.sheet_by_name(sheet_name)
     logger.debug('生成器初始化,filename:%s,sheet name:%s' %
                  (filename, sheet_name))
示例#20
0
 def __init__(self, file_name, **sheet_data):
     logger.debug('class:GetSheetData , 初始化filename:%s ,sheet name:%s' %
                  (file_name, sheet_data))
     super(GetSheetData, self).__init__(file_name=file_name)
     self.sheet_name_and_rows = sheet_data
示例#21
0
 def first_login_function(self, username):
     sql_password = """select t.password from APEX_USER_LOGIN t where t.login_name = '%s'""" % username
     response_data = self.oracle_cursor.execute(sql_password)
     self.password = response_data.fetchone()[0]
     logger.debug('用户登录password:%s' % self.password)
示例#22
0
 def __init__(self, file_name):
     super(ReadSheet, self).__init__(file_name)
     super(ReadSheet, self).get_sheets()
     self.dict_name_rows = dict()
     logger.debug('class:ReadSheet,初始化:%s' % file_name)
示例#23
0
 def __next__(self):
     self.start_row += 1
     self.rows_data = self.open_sheet_name.row_values(rowx=self.start_row)
     logger.debug('生成器返回结果:%s' % self.rows_data)
     return self.rows_data
示例#24
0
 def create_tem_function(self):
     logger.debug(self.file_address)
     create_tem = open(self.file_address, 'w+')
     create_tem.close()