Beispiel #1
0
 def __init__(self):   # 建立连接,使用cursor()方法获取操作游标
     conf_data=ReadConfig()
     self.mysql = pymysql.connect(host=conf_data.get_value('db','host'),
                                  user=conf_data.get_value('db','user'),
                                  password=conf_data.get_value('db','password'),
                                  port=conf_data.get_int('db','port'))
     self.cursor = self.mysql.cursor()
Beispiel #2
0
 def __init__(self):
     host = ReadConfig().get('mysql', 'host')
     port = ReadConfig().get_int('mysql', 'port')
     user = ReadConfig().get('mysql', 'user')
     pwd = ReadConfig().get('mysql', 'pwd')
     try:
         self.db = pymysql.connect(host=host,
                                   user=user,
                                   password=pwd,
                                   port=port,
                                   cursorclass=pymysql.cursors.DictCursor
                                   )  # cursorclass设置查询后返回字典格式
     except ConnectionError as e:
         raise e
    def test_user_auth(self, case):
        my_logger.info('正在执行第{}条用例:{}'.format(case.case_id, case.title))
        my_logger.info('-----------开始检查url地址-------------')
        url = ReadConfig().get('test_api', 'url_pre') + case.url
        my_logger.info('请求url:{}'.format(url))
        data = DoRegex().replace(case.data)
        data = json.loads(data)
        my_logger.info('-----------开始检查参数-------------')
        my_logger.info('请求参数:{}'.format(data))
        res = WebserviceRequest(url).get_result(case.port_name, data)
        time.sleep(60)
        my_logger.info('请求结果:{}'.format(res))
        try:
            self.assertEqual(case.expected, res['retInfo'])
            do_excel.bace_write_by_case_id('verifiedUserAuth', case.case_id,
                                           str(res), 'success')
            Test_result = 'pass'
        except AssertionError as e:
            my_logger.error('出错了,{}'.format(e))
            do_excel.bace_write_by_case_id('verifiedUserAuth', case.case_id,
                                           str(res), 'fail')
            Test_result = 'fail'
            raise e
        except Exception as e:
            raise e

        my_logger.info('本条用例测试结果:{}'.format(Test_result))

        # 如果发送短信验证码成功
        if res['retCode'] == '0' and case.port_name == 'sendMCode':
            sql_code = 'SELECT Fverify_code FROM sms_db_20.t_mvcode_info_3 where Fmobile_no={0};'.format(
                getattr(Context, 'normal_mobile'))
            verify_code = DoMysql().fetch_one(sql_code)['Fverify_code']
            if verify_code:  # 如果查到验证码就放入上下文
                setattr(Context, 'verify_code', verify_code)
Beispiel #4
0
class MyLog:


    log_dir = os.path.join(project_path.log_dir, get_dir())
    info_path = os.path.join(log_dir,'info.log')
    error_path = os.path.join(log_dir, 'error.log')

    # 定义输出格式
    formatter = logging.Formatter(ReadConfig().get('LOG', 'formatter'))
    # 定义控制台渠道
    ch = logging.StreamHandler()
    ch.setLevel(ReadConfig().get('LOG', 'console_leave'))
    ch.setFormatter(formatter)

    # 定义info级别文件输出渠道
    info_handler = logging.handlers.RotatingFileHandler(info_path, maxBytes=10*1024*1024, backupCount=3, encoding='utf-8')
    info_handler.setLevel('INFO')
    info_handler.setFormatter(formatter)

    # 定义error级别文件输出渠道
    error_handler = logging.handlers.RotatingFileHandler(error_path, maxBytes=10*1024*1024, backupCount=3, encoding='utf-8')
    error_handler.setLevel('ERROR')
    error_handler.setFormatter(formatter)

    # 定义报表渠道
    report_handler = logging.StreamHandler(HTMLTestRunnerNew.stdout_redirector)
    report_handler.setLevel(ReadConfig().get('LOG', 'report_leave'))
    report_handler.setFormatter(formatter)


    @staticmethod
    def debug(msg):
        add_handler('debug')
        logger.debug(msg)
        remove_handler('debug')

    @staticmethod
    def info(msg):
        add_handler('info')
        logger.info(msg)
        remove_handler('info')

    @staticmethod
    def error(msg):
        add_handler('error')
        logger.error(msg, exc_info=True)
        remove_handler('error')
Beispiel #5
0
 def request(self,method,url,data):
     conf_data = ReadConfig()
     conf_url = conf_data.get_value('URL', 'pro_url')
     full_url = conf_url + url
     method=method.upper()  #将方法都转换成大写
     if data is not None and type(data)==str: #把excel中的data转换成字典
         data=eval(data)  #如果是字符串就转成字典
     if method=='GET':
         resp = self.session.request(method,url=full_url,params=data)
         logger.info('response :{0}'.format(resp.text))
         return resp
     elif method=='POST':
         resp = self.session.request(method, url=full_url, params=data)
         logger.info('response :{0}'.format(resp.text))
         return resp
     else:
         logger.error('不支持此请求方法')
Beispiel #6
0
class Context:

    rf = ReadConfig()
    client_ip = rf.get('basic', 'client_ip')
    tmpl_id = rf.get('basic', 'tmpl_id')
    true_name = rf.get('basic', 'true_name')
    normal_mobile = mobile_phone.creat_mobile()
    user_id = random_string.create_str()
Beispiel #7
0
 def test_register(self, case):
     my_logger.info('正在执行第{}条用例:{}'.format(case.case_id, case.title))
     my_logger.info('-----------开始检查url地址-------------')
     url = ReadConfig().get('test_api', 'url_pre') + case.url
     my_logger.info('请求url:{}'.format(url))
     # 因注册的用户名不能重复,做随机处理
     last_user_id = random_string.create_str()
     setattr(Context, 'user_id', last_user_id)
     # 因测试验证码超时需要新的手机号验证
     if case.title == '发送短信验证码用于超时':
         normal_mobile = mobile_phone.creat_mobile()
         setattr(Context, 'normal_mobile', normal_mobile)
Beispiel #8
0
    def test_send_Mcode(self, case):
        my_logger.info('正在执行第{}条用例:{}'.format(case.case_id, case.title))
        my_logger.info('-----------开始检查url地址-------------')
        url = ReadConfig().get('test_api', 'url_pre') + case.url
        my_logger.info('请求url:{}'.format(url))
        data = DoRegex().replace(case.data)
        data = json.loads(data)
        my_logger.info('-----------开始检查请求参数-------------')
        my_logger.info('请求参数:{}'.format(data))
        try:
            resp = WebserviceRequest(url).get_result(case.port_name, data)
            time.sleep(60)
            my_logger.info('请求接口结果:{}'.format(resp))
            if resp['retCode'] == '0':
                self.assertEqual(case.expected, resp['retInfo'])
                do_excel.bace_write_by_case_id('sendMcode', case.case_id,
                                               str(resp), 'success')
                Test_result = 'pass'

                # 数据验证
                sql = 'SELECT * FROM sms_db_20.t_mvcode_info_3 where Fmobile_no={};'.format(
                    getattr(Context, 'mobile'))
                seek_data = self.do_mysql.fetch_one(sql)
                actual = {
                    "client_ip": seek_data['Fclient_ip'],
                    "tmpl_id": str(seek_data['Ftmpl_id']),
                    "mobile": str(seek_data['Fmobile_no'])
                }
                self.assertDictEqual(data, actual)
                my_logger.info('发送验证码成功,查询数据库,添加一条数据与请求参数相同')
        except Exception as e:
            # 异常测试用例,需要捕捉错误信息进行断言
            self.assertIn(case.expected, str(e))
            do_excel.bace_write_by_case_id('sendMcode', case.case_id,
                                           str(e.__dict__['fault'][1]),
                                           'success')
            sql = 'SELECT * FROM sms_db_20.t_mvcode_info_3 where Fmobile_no={};'.format(
                getattr(Context, 'mobile'))
            seek_data = self.do_mysql.fetch_one(sql)
            expected = None
            self.assertEqual(expected, seek_data)
            my_logger.info('发送验证码成功,数据库查询无数据')
            Test_result = 'pass'
        except AssertionError as e:
            Test_result = 'fail'
            my_logger.error('出错了,{}'.format(e))
            do_excel.bace_write_by_case_id('sendMcode', case.case_id, e,
                                           'fail')
            raise e

        my_logger.info('本条用例测试结果:{}'.format(Test_result))
Beispiel #9
0
# 步骤:
# 1.定义日志收集器和收集级别
# 2.设定输出渠道
# 3.对接

import logging
from logging.handlers import RotatingFileHandler

import time
from common import project_path
import os
from common.read_conf import ReadConfig
import HTMLTestRunnerNew


logger = logging.getLogger(ReadConfig().get('LOG','log_name'))
logger.setLevel(ReadConfig().get('LOG', 'collect_leave'))

# 获取创建日志的目录
def get_dir():
    log_dir = os.path.join(project_path.log_dir, get_current())
    if not os.path.isdir(log_dir):
        os.mkdir(log_dir)
    else:
        return log_dir


# 获取系统当前时间的年月日格式
def get_current():
    return time.strftime('%Y%m%d', time.localtime())
Beispiel #10
0
 def setUpClass(cls):
     cls.request = Request()  # 建立session会话,实例化对象
     cls.config = ReadConfig()  #为了后边读取配置文件中的数据
Beispiel #11
0
"""
用来替换字符串中的标识符方法
"""
# s  是目标字符串
# d  是替换的内容
# 找到目标字符串里面的标识符的key,去d里面拿到替换的值
#  替换到s里面去  然后返回
import re
from common.read_conf import ReadConfig

read = ReadConfig()


class Context:  # 上下文  数据的准备与记录
    admin_user = read.get_value('admin_data', 'admin_user')
    admin_pwd = read.get_value('admin_data', 'admin_pwd')
    loan_memberId = read.get_value('loan_data', 'loan_memberId')
    invest_user = read.get_value('invest_data', 'invest_user')
    invest_pwd = read.get_value('invest_data', 'invest_pwd')
    invest_member_id = read.get_value('invest_data', 'invest_member_id')

    def replace_new(self, s):
        p = "\${(.*?)}"
        while re.search(p, s):
            m = re.search(p, s)
            key = m.group(1)
            if hasattr(Context, key):
                value = getattr(Context, key)  # 利用反射动态的获取属性的值
                s = re.sub(p, value, s, count=1)
            else:
                print('该属性不存在')