def test_recharge(self, case): # 准备用例数据 url = conf.get('env', 'url') + case['url'] method = case['method'] expected = eval(case['expected']) if '#member_id#' in case['data']: case['data'] = case['data'].replace('#member_id#', str(self.member_id)) data = eval(case['data']) headers = eval(conf.get('env', 'headers')) headers['Authorization'] = self.token_data row = case['case_id'] + 1 # 发送请求 response = self.http.send(url=url, method=method, json=data, headers=headers) res = response.json() #断言 try: self.assertEqual(expected['code'], res['code']) self.assertEqual(expected['msg'], res['msg']) except AssertionError as e: self.excel.write(row=row, column=8, value='未通过') mylog.info('用例:{}---->执行未通过'.format(case['title'])) print('预期结果:{}'.format(expected)) print('实际结果:{}'.format(res)) raise e else: self.excel.write(row=row, column=8, value='通过') mylog.info('用例:{}---->执行通过'.format(case['title']))
def setUp(self): # ---------每个审核的用例执行之前都加一个项目,将项目id保存起来---------- # 获取url url = conf.get('env', 'url') + '/loan/add' data = { "member_id": getattr(TestData, "member_id"), "title": "借钱实现财富自由", "amount": 2000, "loan_rate": 12.0, "loan_term": 3, "loan_date_type": 1, "bidding_days": 5 } headers = eval(conf.get('env', 'headers')) headers['Authorization'] = getattr(TestData, 'token_data') response = self.http.send(url=url, method='post', json=data, headers=headers) result = response.json() # 提取 loan_id loan_id = jsonpath.jsonpath(result, '$..id')[0] setattr(TestData, 'loan_id', str(loan_id))
def test_login(self, case): # 准备测试数据 url = conf.get('env', 'url') + case['url'] expected = eval(case['expected']) data = eval(case['data']) row = case['case_id'] + 1 method = case['method'] headers = eval(conf.get('env', 'headers')) # 发送请求 response = self.http.send(url=url, method=method, json=data, headers=headers) res = response.json() # 断言 try: self.assertEqual(expected['code'], res['code']) self.assertEqual(expected['msg'], res['msg']) except AssertionError as e: self.excel.write(row=row, column=8, value='未通过') mylog.info('用例:{}---->执行未通过'.format(case['title'])) print('预期结果:{}'.format(expected)) print('实际结果:{}'.format(res)) raise e else: self.excel.write(row=row, column=8, value='通过') mylog.info('用例:{}---->执行通过'.format(case['title']))
def setUpClass(cls): # -----------执行用例之前先进行登录--> # 登录地址 url = conf.get('env', 'url') + '/member/login' # 登录参数 data = { 'mobile_phone': conf.get('test_data', 'admin_phone'), 'pwd': conf.get('test_data', 'admin_pwd'), } # 登录headers headers = eval(conf.get('env', 'headers')) # 发送请求 response = cls.http.send(url=url, method='post', json=data, headers=headers) res = response.json() # 提取member_id id = jsonpath.jsonpath(res, '$..id')[0] setattr(TestData, 'member_id', str(id)) # 提取token_type token_type = jsonpath.jsonpath(res, '$..token_type')[0] # 提取token token = jsonpath.jsonpath(res, '$..token')[0] token_data = token_type + ' ' + token setattr(TestData, 'token_data', token_data)
def test_main_stream(self, case): # 准备数据 # 拼接url url = conf.get('env', 'url') + case['url'] # 对url中的参数进行替换 url = handle_data(url) # 提取method method = case['method'] if case['title'] == '管理员注册': admin_phone = self.random_phone() setattr(TestData, 'admin_phone', admin_phone) if case['title'] == '用户注册': phone = self.random_phone() setattr(TestData, 'phone', phone) case['data'] = handle_data(case['data']) data = eval(case['data']) # 提取expected expected = eval(case['expected']) # 提取 row row = case['case_id'] + 1 # 提取headers headers = eval(conf.get('env', 'headers')) if case['interface'] != 'register' and case['interface'] != 'login': headers['Authorization'] = getattr(TestData, 'token_data') # 发送请求 response = self.http.send(url=url, method=method, json=data, params=data, headers=headers) res = response.json() if case['interface'] == 'login': member_id = jsonpath.jsonpath(res, '$..id')[0] token_type = jsonpath.jsonpath(res, '$..token_type')[0] token = jsonpath.jsonpath(res, '$..token')[0] token_data = token_type + ' ' + token setattr(TestData, 'member_id', str(member_id)) setattr(TestData, 'token_data', token_data) elif case['interface'] == 'add': loan_id = jsonpath.jsonpath(res, '$..id')[0] setattr(TestData, 'loan_id', str(loan_id)) # 断言 try: self.assertEqual(expected['code'], res['code']) self.assertEqual(expected['msg'], res['msg']) except AssertionError as e: self.excel.write(row=row, column=8, value='未通过') mylog.info('用例:{}---->执行未通过'.format(case['title'])) print('预期结果:{}'.format(expected)) print('实际结果:{}'.format(res)) raise e else: self.excel.write(row=row, column=8, value='通过') mylog.info('用例:{}---->执行通过'.format(case['title']))
def __init__(self): # 新建连接 self.con = pymysql.connect(host=conf.get('mysql', 'host'), user=conf.get('mysql', 'user'), password=conf.get('mysql', 'password'), port=conf.getint('mysql', 'port'), charset='utf8') #新建游标 self.cur = self.con.cursor()
def test_invest(self, case): # 准备数据 # 拼接url url = conf.get('env', 'url') + case['url'] # 提取method method = case['method'] # 提取data case['data'] = handle_data(case['data']) data = eval(case['data']) # 提取expected expected = eval(case['expected']) # 提取headers headers = eval(conf.get('env', 'headers')) if case['interface'] != 'login': headers['Authorization'] = getattr(TestData, 'token_data') # 提取row row = case['case_id'] + 1 # 发送请求 response = self.http.send(url=url, method=method, json=data, headers=headers) res = response.json() if case['interface'] == 'login': # 提取member_id id = jsonpath.jsonpath(res, '$..id')[0] setattr(TestData, 'member_id', str(id)) # 提取token_type token_type = jsonpath.jsonpath(res, '$..token_type')[0] # 提取token token = jsonpath.jsonpath(res, '$..token')[0] # 拼接token_data token_data = token_type + ' ' + token setattr(TestData, 'token_data', token_data) elif case['interface'] == 'add': # 提取loan_id loan_id = jsonpath.jsonpath(res, '$..id')[0] setattr(TestData, 'loan_id', str(loan_id)) # 断言 try: self.assertEqual(expected['code'], res['code']) self.assertEqual(expected['msg'], res['msg']) except AssertionError as e: self.excel.write(row=row, column=8, value='未通过') mylog.info('用例:{}---->执行未通过'.format(case['title'])) print('预期结果:{}'.format(expected)) print('实际结果:{}'.format(res)) raise e else: self.excel.write(row=row, column=8, value='通过') mylog.info('用例:{}---->执行已通过'.format(case['title']))
def test_withdraw(self, case): # 准备测试数据 url = conf.get('env', 'url') + case['url'] method = case['method'] expected = eval(case['expected']) if '#member_id#' in case['data']: case['data'] = case['data'].replace('#member_id#', str(self.member_id)) if '#phone#' in case['data']: case['data'] = case['data'].replace('#phone#', self.phone) if '#pwd#' in case['data']: case['data'] = case['data'].replace('#pwd#', self.pwd) data = eval(case['data']) row = case['case_id'] + 1 headers = eval(conf.get('env', 'headers')) if case['interface'] != 'login': headers['Authorization'] = self.token_data if case['check_sql']: sql = case['check_sql'].format( conf.get('test_data', 'mobile_phone')) before_amount = self.db.get_one(sql)[0] # 发送请求 response = self.http.send(url=url, method=method, json=data, headers=headers) result = response.json() if case['interface'] == 'login': TestWithdraw.member_id = jsonpath.jsonpath(result, '$..id')[0] token = jsonpath.jsonpath(result, '$..token')[0] token_type = jsonpath.jsonpath(result, '$..token_type')[0] TestWithdraw.token_data = token_type + ' ' + token # 断言 try: self.assertEqual(expected['code'], result['code']) self.assertEqual(expected['msg'], result['msg']) if case['check_sql']: sql = case['check_sql'].format( conf.get('test_data', 'mobile_phone')) after_amount = self.db.get_one(sql)[0] amount = decimal.Decimal(str(data['amount'])) self.assertEqual(before_amount - after_amount, amount) except AssertionError as e: self.excel.write(row=row, column=8, value='未通过') mylog.info('用例:{}---->执行未通过'.format(case['title'])) print('预期结果:{}'.format(expected)) print('实际结果:{}'.format(result)) raise e else: self.excel.write(row=row, column=8, value='通过') mylog.info('用例:{}---->执行通过'.format(case['title']))
def send_email(file_path): # 1.连接smtp服务器 smtp = smtplib.SMTP_SSL(host=conf.get('email', 'host'), port=conf.get('email', 'port')) smtp.login(user=conf.get('email', 'user'), password=conf.get('email', 'password')) # 2.构建邮件 msg = MIMEMultipart() text_msg = MIMEText(open(file_path, 'r', encoding='utf8').read(), 'html') msg.attach(text_msg) file_msg = MIMEApplication(open(file_path, 'rb').read()) file_msg.add_header('content-disposition', 'attachment', filename='python.html') msg.attach(file_msg) msg['from'] = conf.get('email', 'user_from') user_to = ['*****@*****.**', '*****@*****.**'] user_too = ','.join(user_to) print(user_too) msg['to'] = user_too msg['subject'] = conf.get('email', 'subject') # 3.发送邮件 smtp.send_message(msg, from_addr=conf.get('email', 'user_from'), to_addrs=user_too)
def test_audit(self, case): # 准备数据 url = conf.get('env', 'url') + case['url'] case['data'] = handle_data(case['data']) data = eval(case['data']) method = case['method'] expected = eval(case['expected']) headers = eval(conf.get('env', 'headers')) headers['Authorization'] = getattr(TestData, 'token_data') row = case['case_id'] + 1 # 发送请求 response = self.http.send(url=url, method=method, json=data, headers=headers) json_res = response.json() # 如果审核通过的项目返回ok,说明该项目已审核 if case['title'] == '审核通过' and json_res['msg'] == 'OK': pass_loan_id = getattr(TestData, 'loan_id') setattr(TestData, 'pass_loan_id', pass_loan_id) # 断言 try: self.assertEqual(json_res['code'], expected['code']) self.assertEqual(json_res['msg'], expected['msg']) if case['check_sql']: sql = handle_data(case['check_sql']) status = self.db.get_one(sql)[0] self.assertEqual(status, expected['status']) except AssertionError as e: self.excel.write(row=row, column=8, value='未通过') mylog.info('用例:{}---->执行未通过'.format(case['title'])) print('预期结果:{}'.format(expected)) print('实际结果:{}'.format(json_res)) raise e else: self.excel.write(row=row, column=8, value='通过') mylog.info('用例:{}---->执行通过'.format(case['title']))
def handle_data(data): r = r'#(.+?)#' while re.search(r, data): res = re.search(r, data) item = res.group() key = res.group(1) try: data = data.replace(item, getattr(TestData, key)) except: data = data.replace(item, conf.get('test_data', key)) return data
def test_register(self, case): #准备用例数据 # 获取url url = conf.get('env', 'url') + case['url'] # 请求方法 method = case['method'] #判断是否有手机号需要替换 if '#phone#' in case['data']: phone = self.random_phone() case['data'] = case['data'].replace('#phone#', phone) data = eval(case['data']) #期望结果 expected = eval(case['expected']) #获取请求头 headers = eval(conf.get('env', 'headers')) #获取用例id row = case['case_id'] + 1 #发送请求 response = self.http.send(url=url, method=method, json=data, headers=headers) res = response.json() #断言 try: self.assertEqual(expected['code'], res['code']) self.assertEqual(expected['msg'], res['msg']) except AssertionError as e: self.excel.write(row=row, column=8, value='未通过') mylog.info('用例:{}---->执行未通过'.format(case['title'])) print('期望结果:{}'.format(expected)) print('实际结果:{}'.format(res)) raise e else: self.excel.write(row=row, column=8, value='通过') mylog.info('用例:{}---->执行通过'.format(case['title']))
def setUpClass(cls): #拼接url地址 url = conf.get('env', 'url') + '/member/login' data = { 'mobile_phone': conf.get('test_data', 'mobile_phone'), 'pwd': conf.get('test_data', 'pwd') } headers = eval(conf.get('env', 'headers')) #发送请求 response = cls.http.send(url=url, method='post', json=data, headers=headers) result = response.json() #提取member_id cls.member_id = jsonpath.jsonpath(result, '$..id')[0] #提取token_type token_type = jsonpath.jsonpath(result, '$..token_type')[0] #提取token token = jsonpath.jsonpath(result, '$..token')[0] #拼接token cls.token_data = token_type + ' ' + token
""" ============================ Author : XiaoLei.Du Time : 2020/8/16 11:12 E-mail : [email protected] File : mylogger.py ============================ """ import os import logging from common.myconifg import conf from common.contains import LOGDIR # 读取配置文件中的数据 level = conf.get('logging', 'level') s_level = conf.get('logging', 's_level') f_level = conf.get('logging', 'f_level') file_nane = conf.get('logging', 'file_nane') # 获取日志文件的路径 log_path = os.path.join(LOGDIR, file_nane) class MyLog: @staticmethod def mylogger(): # 一、创建一个名为test_log的日志收集器 mylog = logging.getLogger('test_log') # 二、设置收集器的等级 mylog.setLevel(level) # 三、添加输出渠道到控制台 # 1、创建一个输出到控制台的输出渠道
def setUpClass(cls): cls.phone = conf.get('test_data', 'mobile_phone') cls.pwd = conf.get('test_data', 'pwd')