def test_add(self,one_case): # data = one_case['data'] #需要进行参数化 new_data = Context.admin_user_tel_pwd_replace(one_case['data']) #需要实现 new_url = do_config.get_value('api', 'prefix_url') + one_case['url'] #向服务器发起请求 res = self.do_request.to_request(method=one_case['method'], url=new_url, data=new_data) #期望值 expect_result = one_case['expected'] msg = "测试" + one_case['title'] success_msg = do_config.get_value('msg', 'success_result') fail_msg = do_config.get_value('msg', 'fail_result') case_id = one_case['case_id'] try: # self.assertEqual(str(expect_result), code, msg=msg) self.assertIn(str(expect_result), res.text, msg=msg) do_excel.write_result(case_id+1, res.text, success_msg) do_logger.debug('{},执行结果为:{}'.format(msg, success_msg)) except AssertionError as e: do_excel.write_result(case_id+1, res.text, fail_msg) do_logger.error('{}, 执行结果为:{}具体异常为:{}'.format(msg, fail_msg, e)) raise e
def __init__(self): # 定义一个名为case的收集器 self.case_logger = logging.getLogger(do_config.get_value('log','logger_name')) # 设置收集器的日志等级 self.case_logger.setLevel(do_config.get_value('log','logger_level')) # 定义输出渠道 # 控制台输出渠道 console_handle = logging.StreamHandler() # 文件输出渠道 now = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time())) log_path = LOGS_DIR + '/logger_' + now + '.log' file_handle = logging.FileHandler(log_path, encoding='utf-8') # 设置输出渠道日志等级 console_handle.setLevel(logging.ERROR) file_handle.setLevel(logging.INFO) # 定义日志格式 simple_formatter = logging.Formatter(do_config.get_value('log','simple_formatter')) verbose_formatter = logging.Formatter(do_config.get_value('log','verbose_formatter')) # 设置日志输出格式 console_handle.setFormatter(simple_formatter) file_handle.setFormatter(verbose_formatter) # 对接收集器与输出渠道 self.case_logger.addHandler(console_handle) self.case_logger.addHandler(file_handle)
def test_register(self,one_case): case_id = one_case['case_id'] title = one_case['title'] data = one_case['data'] # 需要参数化, 将手机号替换 new_data = HandleContext.register_paramaterization_not_exist(data) #参数已经被正常实际好替换 do_logger.debug('获取到的data数据为:{},在第【{}】'.format(new_data,case_id+1)) url = one_case['url'] total_url = do_config.get_value('requests','url_head') + url method = one_case['method'] expected = one_case['expected'] header = do_config.get_eval_data('requests','login_headers') register_res =do_http_requests.to_request(method=method, url=total_url, data=new_data, headers=header) #real_result = login_res.json()['msg'] real_result = register_res.text #返回是字符串格式json #real_result = str(register_res.json()) # expected_result = expected msg = '测试' + title success_msg = do_config.get_value('msg', 'success_result') fail_msg = do_config.get_value('msg', 'fail_result') try: self.assertEqual(expected_result,real_result,msg=msg) do_hanle_excel.write_case(case_id+1,real_result,success_msg) do_logger.debug('{},用例执行成功,执行结果为:{}'.format(msg,success_msg)) except AssertionError as e: do_hanle_excel.write_case(case_id+1,real_result,fail_msg) do_logger.debug('{},用例用例执行失败,结果为:{},失败原因:{}'.format(msg,fail_msg,e)) raise e
def __init__(self): self.conn = pymysql.connect( host=do_config.get_value('mysql', 'host'), user=do_config.get_value('mysql', 'user'), password=do_config.get_value('mysql', 'password'), db=do_config.get_value('mysql', 'db'), port=do_config.get_int('mysql', 'port'), charset=do_config.get_value('mysql', 'charset'), cursorclass=pymysql.cursors.DictCursor) self.cursor = self.conn.cursor()
def __init__(self): self.conn = pymysql.connect( host="192.168.10.65", user=do_config.get_value("mysql", "user"), password=do_config.get_value("mysql", "password"), port=do_config.get_int("mysql", "port"), database=do_config.get_value("mysql", "database"), charset="utf8", cursorclass=pymysql.cursors.DictCursor) self.cursor = self.conn.cursor()
def create_new_user(regname, pwd='123456'): '''创建一个账户''' handle_mysql = HandleMysql() send_request = HttpRequest() url = do_config.get_value('api', 'prefix_url') + '/member/register' sql = 'select id from member where MobilePhone=%s;' while True: mobilephone = handle_mysql.create_not_existed_mobile() data = {'mobilephone':mobilephone, 'pwd':pwd, 'regname':regname} send_request.to_request(method='post', url=url, data=data) result = handle_mysql.to_run(sql=sql, args=(mobilephone,)) if result: user_id = result['id'] break user_dict = { regname: { 'Id': user_id, 'regname': regname, 'mobilephone': mobilephone, 'pwd': pwd } } handle_mysql.close() send_request.close() return user_dict
def test_recharge(self, one_case): # data = one_case['data'] #需要进行参数化 new_data = Context.recharge_parameterization(one_case['data']) #需要实现 new_url = do_config.get_value('api', 'prefix_url') + one_case['url'] check_sql = one_case['check_sql'] if check_sql: check_sql = Context.recharge_parameterization(check_sql) mysql_data = self.handle_mysql.to_run( check_sql) #decimal.Decimal类型 amount_before_recharge = float(mysql_data['LeaveAmount']) amount_before_recharge = round(amount_before_recharge, 2) dict_data = json.loads(new_data, encoding='utf-8') recharge_number = dict_data['amount'] #向服务器发起请求 res = self.do_request.to_request(method=one_case['method'], url=new_url, data=new_data) #期望值 expect_result = one_case['expected'] msg = "测试" + one_case['title'] success_msg = do_config.get_value('msg', 'success_result') fail_msg = do_config.get_value('msg', 'fail_result') case_id = one_case['case_id'] code = res.json().get('code') try: self.assertEqual(str(expect_result), code, msg=msg) # self.assertIn(str(expect_result), res.text, msg=msg) if check_sql: mysql_data = self.handle_mysql.to_run( check_sql) # decimal.Decimal类型 amount_after_recharge = float(mysql_data['LeaveAmount']) amount_after_recharge = round(amount_after_recharge, 2) self.assertEqual( recharge_number, (amount_after_recharge - amount_before_recharge), msg=msg) do_excel.write_result(case_id + 1, res.text, success_msg) do_logger.debug('{},执行结果为:{}'.format(msg, success_msg)) except AssertionError as e: do_excel.write_result(case_id + 1, res.text, fail_msg) do_logger.error('{}, 执行结果为:{}具体异常为:{}'.format(msg, fail_msg, e)) raise e
class ApiTest: for i in range(3): method = 'post' url = do_config.get_value('request', 'default_address') + '/member/register' data = '{"mobilephone": "${not_existed_tel}", "pwd": 123456, "regname": "刀刀"}' setattr(Context, 'existed', do_mysql.not_existed_tel()) request_data = Context.mobilephone(data) res = do_request.send_request(method, url, data=request_data) print(res.text)
def test_invest(self, one_case): # data = one_case['data'] #需要进行参数化 # print(data) # print(type(data)) new_data = Context.invest_parameterization(one_case['data']) #需要实现 print('-----------------') print(new_data) print('&&&&&&&&&&&&&&&&&&&') new_url = do_config.get_value('api', 'prefix_url') + one_case['url'] #向服务器发起请求 res = self.do_request.to_request(method=one_case['method'], url=new_url, data=new_data) if '加标成功' in res.text: check_sql = one_case['check_sql'] if check_sql: check_sql = Context.invest_parameterization(check_sql) print(check_sql) mysql_data = self.handle_mysql.to_run(check_sql) print(mysql_data, type(mysql_data)) #动态修改或者获取变量的一个过程 # Context.loan_id = mysql_data.get('Id') #类属性 setattr(Context, "loan_id", mysql_data['Id']) print('-----动态----', getattr(Context, "loan_id")) #期望值 expect_result = one_case['expected'] msg = "测试" + one_case['title'] success_msg = do_config.get_value('msg', 'success_result') fail_msg = do_config.get_value('msg', 'fail_result') case_id = one_case['case_id'] try: # self.assertEqual(str(expect_result), code, msg=msg) self.assertIn(str(expect_result), res.text, msg=msg) do_excel.write_result(case_id + 1, res.text, success_msg) do_logger.debug('{},执行结果为:{}'.format(msg, success_msg)) except AssertionError as e: do_excel.write_result(case_id + 1, res.text, fail_msg) do_logger.error('{}, 执行结果为:{}具体异常为:{}'.format(msg, fail_msg, e)) raise e
def test_register(self, one_case): case_id = one_case['case_id'] title = one_case['title'] data = one_case['data'] # 需要参数化, 将手机号替换 new_data = HandleContext.add_paramaterization(data) # 参数已经被正常实际好替换 do_logger.debug('new_data为:{},类型【{}】在第【{}】'.format( new_data, type(new_data), case_id + 1)) # if case_id > 1: # new_data_update = json.loads(new_data, encoding='utf-8') # # do_logger.debug( # 'new_data_update为:{},类型【{}】在第【{}】'.format(new_data_update, type(new_data_update), case_id + 1)) # memberId = new_data_update['memberId'] # do_logger.debug('memberID为:{},类型【{}】在第【{}】'.format(memberId, type(memberId), case_id + 1)) url = one_case['url'] total_url = do_config.get_value('requests', 'url_head') + url method = one_case['method'] expected = one_case['expected'] header = do_config.get_eval_data('requests', 'login_headers') register_res = do_http_requests.to_request(method=method, url=total_url, data=new_data, headers=header) # real_result = login_res.json()['msg'] real_result = register_res.json().get('code') # 返回是字符串格式json expected_result = expected msg = '测试' + title success_msg = do_config.get_value('msg', 'success_result') fail_msg = do_config.get_value('msg', 'fail_result') try: self.assertEqual(str(expected_result), real_result, msg=msg) do_hanle_excel.write_case(case_id + 1, real_result, success_msg) do_logger.debug('{},用例执行成功,执行结果为:{}'.format(msg, success_msg)) except AssertionError as e: do_hanle_excel.write_case(case_id + 1, real_result, fail_msg) do_logger.debug('{},用例用例执行失败,结果为:{},失败原因:{}'.format( msg, fail_msg, e)) raise e
def test_invest(self, case_list): case_list_str = str(case_list) context_data = HandleContext.manager_user_tel(case_list_str) context_data = HandleContext.manager_user_pwd(context_data) context_data = HandleContext.borrower_user_id(context_data) context_data = HandleContext.loan_id(context_data) context_data = HandleContext.investors_user_tel(context_data) context_data = HandleContext.investors_user_id(context_data) context_data = HandleContext.investors_user_pwd(context_data) context_data = HandleContext.not_existed_user_id(context_data) context_data = HandleContext.not_exitsed_loan_id(context_data) case_list_dict = eval(context_data) request_data = case_list_dict['data'] method = case_list_dict['method'] url = do_config.get_value( 'request', 'default_address') + case_list_dict['url_path'] res = do_request.send_request(method, url, data=request_data) add_success_msg = do_config.get_value('request', 'add_success_msg') actual = res.text if add_success_msg in actual: check_sql = case_list_dict['check_sql'] if check_sql: loan_id_sql = do_mysql.sql_search(check_sql) loan_id_value = loan_id_sql['Id'] setattr(HandleContext, 'loan_idw', loan_id_value) result = str(case_list_dict['expected']) msg = case_list_dict['title'] true_result = do_config.get_value('msg', 'true_result') fail_result = do_config.get_value('msg', 'fail_result') try: self.assertIn(result, actual, msg) print('{},执行结果为:{}'.format(msg, true_result)) my_excel.write_result(case_list_dict['case_id'] + 1, actual, true_result) do_logger.error("{}, 执行结果为: {}".format(msg, true_result)) except AssertionError as e: print('具体异常为{}'.format(e)) my_excel.write_result(case_list_dict['case_id'] + 1, actual, fail_result) do_logger.error("{}, 执行结果为: {},具体异常为{}".format( msg, fail_result, e)) raise e
def test_invest(self,one_case): case_id = one_case['case_id'] title = one_case['title'] data = one_case['data'] # 需要参数化, 将手机号替换 #换位recharge的参数化 new_data = HandleContext.invest_paramaterization(data) #参数已经被正常实际好替换 do_logger.debug('获取到的new_data数据为:{},在第【{}】'.format(new_data,case_id+1)) url = one_case['url'] total_url = do_config.get_value('requests','url_head') + url method = one_case['method'] expected = one_case['expected'] check_sql = one_case['check_sql'] header = do_config.get_eval_data('requests','login_headers') invest_res =do_http_requests.to_request(method=method, url=total_url, data=new_data, headers=header) invest_res_content = invest_res.text if '加标成功' in invest_res_content: # 确定一定是加标成功 if check_sql: check_sql = HandleContext.invest_paramaterization(check_sql) mysql_data = self.handle_mysql.run_mysql(check_sql) loan_id = mysql_data['Id'] do_logger.debug('load_id的值为【{}】,在第 {} 行,返回值类型 {}'.format(loan_id,case_id+1,type(loan_id))) # 使用全局变量来解决接口依赖,极有可能出现循环导入,会抛出异常 #接口依赖是动态获取变量的过程 #HandleContext.loan_id = loan_id setattr(HandleContext,"loan_id",loan_id) # 给一个对象动态的创建属性 real_result = invest_res.json().get('code') #返回是字符串格式json expected_result = expected msg = '测试' + title success_msg = do_config.get_value('msg', 'success_result') fail_msg = do_config.get_value('msg', 'fail_result') try: self.assertEqual(str(expected_result),real_result,msg=msg) do_hanle_excel.write_case(case_id+1,real_result,success_msg) do_logger.debug('{},用例执行成功,执行结果为:{}'.format(msg,success_msg)) except AssertionError as e: do_hanle_excel.write_case(case_id+1,real_result,fail_msg) do_logger.debug('{},用例用例执行失败,结果为:{},失败原因:{}'.format(msg,fail_msg,e)) raise e
def __init__(self): self.case_logger = logging.getLogger( do_config.get_value("log", "logger_name")) self.case_logger.setLevel(do_config.get_value("log", "logger_level")) console_handle = logging.StreamHandler() # 输出到日志文件 # file_handle = logging.FileHandler(do_config.get_value("log", "log_filename"), encoding="utf-8") file_handle = logging.FileHandler(log_file_path, encoding='utf-8') # 4. 指定日志输出渠道的日志等级 console_handle.setLevel(do_config.get_value("log", "console_level")) file_handle.setLevel(do_config.get_value("log", "file_level")) # 5. 定义日志显示的格式 simple_formatter = logging.Formatter( do_config.get_value("log", "simple_formatter")) verbose_formatter = logging.Formatter( do_config.get_value("log", "verbose_formatter")) console_handle.setFormatter(simple_formatter) # 终端显示简单结构的日志 file_handle.setFormatter(verbose_formatter) # 日志文件显示复杂结构的日志 # 6. 对接, 将日志收集器与输出渠道进行对接 self.case_logger.addHandler(console_handle) self.case_logger.addHandler(file_handle)
def test_register(self): method = 'POST' url = do_config.get_value('request', 'default_address') path = '/member/register' data = {"mobilephone": "${not_existed_tel}", "pwd": self.pwd, "regname": self.reg_name} tel_list = [] for i in range(3): not_existed_tel = str(self.not_existed_tel()) tel_list.append(not_existed_tel) data_re = re.sub(r'\${not_existed_tel}', not_existed_tel, str(data)) request_result = do_request.send_request(method, url=url + path, data=eval(data_re)) do_request.request_close() return tel_list
def test_login(self, case): url = do_config.get_value("url", "aiot") + case["url"] data = case["data"] res = do_request.to_request(url, data=data) except_result = case["except"] real_result = res.json()["msg"] ms = case["title"] try: self.assertIn(except_result, real_result, msg=ms) get_log.info("{}执行通过".format(ms)) except Exception as e: get_log.error("{}执行失败".format(ms)) raise e
def test_login(self, one_case): new_data = Context.register_parameterization(one_case['data']) new_url = do_config.get_value('api', 'prefix_url') + one_case['url'] #向服务器发起请求 res = TestLogin.do_request.to_request(method=one_case['method'], url=new_url, data=new_data) #期望值 expected_result = one_case['expected'] msg = "测试" + one_case['title'] success_msg = do_config.get_value('msg', 'success_result') fail_msg = do_config.get_value('msg', 'fail_result') case_id = one_case['case_id'] try: self.assertEqual(expected_result, res.text, msg=msg) do_excel.write_result(case_id + 1, res.text, success_msg) do_logger.debug('{},执行结果为:{}'.format(msg, success_msg)) except AssertionError as e: do_excel.write_result(case_id + 1, res.text, fail_msg) do_logger.error('{}, 执行结果:{}具体异常为:{}'.format(msg, fail_msg, e)) raise e
def test_login(self, case): url = do_config.get_value("url", "aiot") + case["url"] data = case["data"] res = do_request.to_request(url, data=data) except_result = case["except"] real_result = res.json()["msg"] ms = case["title"] try: self.assertIn(except_result, real_result, msg=ms) get_log.info("{}执行通过".format(ms)) if res.json()["data"]: datas = {"info": {"Authorization": res.json()["data"]}} HandleConfig(TEST_CONFIG_PATH).write_config( datas, TEST_CONFIG_PATH) except Exception as e: get_log.error("{}执行失败".format(ms)) raise e
def test_getUserInfo(self, case): url = do_config.get_value("url", "aiot") + case["url"] data = case["data"] author = HandleConfig(TEST_CONFIG_PATH).get_value( "info", "authorization") headers = {"Authorization": author} res = do_request.to_request(url, data=data, headers=headers, is_params=True) except_result = case["except"] real_result = res.json()["msg"] ms = case["title"] try: self.assertIn(except_result, real_result, msg=ms) get_log.info("{}执行通过".format(ms)) except Exception as e: get_log.error("{}执行失败".format(ms)) raise e
def test_login(self, case_list): self.my_HandleExcel = HandleExcel(DATA_COMMON_FILE_PATH, 'login') request_result = do_request.send_request(case_list['method'], do_config.get_value('request', 'default_address') + case_list[ 'url_path'], case_list['data']) actual_text = request_result.text actual_value = json.loads(actual_text)['code'] actual = 'code: "{}",'.format(actual_value) result = case_list['expected'] msg = case_list['title'] try: self.assertEqual(result, actual, msg) print('{},执行结果为:{}'.format(msg, true_result)) self.my_HandleExcel.write_result(case_list['case_id'] + 1, actual, true_result) do_logger.error("{}, 执行结果为: {}".format(msg, true_result)) except AssertionError as e: print('具体异常为{}'.format(e)) self.my_HandleExcel.write_result(case_list['case_id'] + 1, actual, fail_result) do_logger.error("{}, 执行结果为: {},具体异常为{}".format(msg, fail_result, e)) raise e
def test_recharge(self, case_list): self.my_HandleExcel = HandleExcel(DATA_COMMON_FILE_PATH, 'recharge') if case_list['check_sql']: before_sql_data = do_mysql.sql_search( case_list['check_sql'], virtue=eval(case_list['data'])['mobilephone']) self.before_leaveamount = float(before_sql_data['LeaveAmount']) request_result = do_request.send_request( case_list['method'], do_config.get_value('request', 'default_address') + case_list['url_path'], case_list['data']) actual = int(request_result.json().get('code')) result = case_list['expected'] msg = case_list['title'] try: self.assertEqual(result, actual, msg) if case_list['check_sql']: after_sql_data = do_mysql.sql_search( case_list['check_sql'], virtue=eval(case_list['data'])['mobilephone']) after_leaveamount = float(after_sql_data['LeaveAmount']) true_results = after_leaveamount - self.before_leaveamount self.assertEqual( eval(case_list['data'])['amount'], round(true_results, 2), msg) print('{},执行结果为:{}'.format(msg, true_result)) self.my_HandleExcel.write_result(case_list['case_id'] + 1, actual, true_result) do_logger.error("{}, 执行结果为: {}".format(msg, true_result)) except AssertionError as e: print('具体异常为{}'.format(e)) self.my_HandleExcel.write_result(case_list['case_id'] + 1, actual, fail_result) do_logger.error("{}, 执行结果为: {},具体异常为{}".format( msg, fail_result, e)) raise e
def __init__(self): self.caselogger = logging.getLogger( do_config.get_value('log', 'logger_name')) self.caselogger.setLevel(do_config.get_value('log', 'logger_level')) console_handler = logging.StreamHandler() file_handler = logging.FileHandler( do_config.get_value('log', 'log_filename')) console_handler.setLevel(do_config.get_value('log', 'console_level')) file_handler.setLevel(do_config.get_value('log', 'file_level')) simple_formattor = logging.Formatter( do_config.get_value('log', 'simple_formatter')) complicated_formattor = logging.Formatter( do_config.get_value('log', 'verbose_formatter')) console_handler.setFormatter(simple_formattor) file_handler.setFormatter(complicated_formattor) self.caselogger.addHandler(console_handler) self.caselogger.addHandler(file_handler)
from scripts.constants import USER_ACCOUNTS_FILE_PATH, CASES_DIR from scripts.handle_user import generate_users_config if not os.path.exists(USER_ACCOUNTS_FILE_PATH): #如果用户账号所在文件不存在,则创建用户账号 generate_users_config() #1.创建套件 # one_suite = unittest.TestSuite() #2.加载用例 #创建加载器对象 # one_loader = unittest.TestLoader() # one_suite.addTest(one_loader.loadTestsFromModule(register)) one_suite = unittest.defaultTestLoader.discover(CASES_DIR, pattern='test*.py') #3.运行用例 report_name = do_config.get_value('report', 'report_html_name') + \ datetime.strftime(datetime.now(), "%Y%m%d%H%M%S") +'.html' report_full_path = os.path.join(REPORTS_DIR, report_name) # print(report_full_path) with open(report_full_path, mode='wb') as save_to_file: one_runner = HTMLTestRunnerNew.HTMLTestRunner( stream=save_to_file, verbosity=do_config.get_int('report', 'verbosity'), title=do_config.get_value('report', 'title'), description=do_config.get_value('report', 'description'), tester=do_config.get_value('report', 'tester')) one_runner.run(one_suite)
@Time: 2019-07-21 23:31 @Desc: S """ import json import unittest from libs.ddt import ddt, data from scripts.handle_config import do_config from scripts.handle_mysql import do_mysql from scripts.handle_excel import HandleExcel from scripts.handle_log import do_logger from scripts.handle_path import DATA_COMMON_FILE_PATH from scripts.handle_request import do_request from scripts.handle_context import HandleContext true_result = do_config.get_value('msg', 'true_result') fail_result = do_config.get_value('msg', 'fail_result') def excel_suite(): register_excel = HandleExcel(DATA_COMMON_FILE_PATH, 'recharge') # 实例化对象 register_excel_cases = register_excel.get_cases() # 获取excel测试用例 register_cases = HandleContext.not_existed_tel( HandleContext.investors_user_pwd( HandleContext.investors_user_tel( str(register_excel_cases)))) # 执行参数化替换 register_cases = eval(register_cases) wb, ws = register_excel.load_excel() wb.close() return register_cases
# coding=UTF-8 """ @Author: STAURL.COM @Contact: [email protected] @Project: python_full_stack_automation_test @File: test_cw0629_log.py @Time: 2019-07-05 00:11 @Desc: S """ import logging from scripts.handle_config import do_config from scripts.handle_path import LOGS_DEBUG_FILE_PATH logger_name = do_config.get_value('log', 'logger_name') logger_level = do_config.get_value('log', 'logger_level') console_leves = do_config.get_value('log', 'console_leves') file_level = do_config.get_value('log', 'file_level') simple_formatter_confing = do_config.get_value('log', 'simple_formatter') verbose_formatter_config = do_config.get_value('log', 'verbose_formatter') class HandleLog: def __init__(self): self.case_logger = logging.getLogger(logger_name) self.case_logger.setLevel(logger_level) console_handle = logging.StreamHandler() file_handle = logging.FileHandler(LOGS_DEBUG_FILE_PATH, encoding='utf-8')
@time: 2019/8/24 15:03 """ import unittest import os from scripts.handle_excel import DoExcel from scripts.handle_mysql import DoMysql from libs.ddt import ddt, data from scripts.handle_config import do_config from scripts.handle_log import do_log from scripts.handle_webservice import DoWebService from scripts.constants import DATAS_DIR from scripts.handle_context import Context http_excel_path = os.path.join( DATAS_DIR, do_config.get_value('cases excel', 'http_excel_name')) sheet_name = do_config.get_value('cases excel', 'register_sheet') http_host = do_config.get_value('request info', 'host') do_excel = DoExcel(http_excel_path, sheet_name) cases = do_excel.get_cases() @ddt class TestRegister(unittest.TestCase): @classmethod def setUpClass(cls): cls.do_mysql = DoMysql() cls.do_mysql_user = DoMysql(db_name='user_db') do_log.info('{:=^40s}\n'.format('测试用户注册接口用例开始执行'))
@file: test_sendmcode.py @time: 2019/8/24 11:38 """ import unittest import os from scripts.handle_excel import DoExcel from libs.ddt import ddt,data from scripts.handle_config import do_config from scripts.handle_log import do_log from scripts.handle_webservice import DoWebService from scripts.constants import DATAS_DIR from scripts.handle_context import Context http_excel_path=os.path.join(DATAS_DIR,do_config.get_value('cases excel','http_excel_name')) sheet_name=do_config.get_value('cases excel','send_sheet') http_host = do_config.get_value('request info','host') do_excel=DoExcel(http_excel_path,sheet_name) cases = do_excel.get_cases() @ddt class TestSendMCode(unittest.TestCase): @classmethod def setUpClass(cls): do_log.info('{:=^40s}\n'.format('测试发送短信验证码接口用例开始执行')) @classmethod def tearDownClass(cls):
# -*- coding: UTF-8 -*- import unittest from libs.HTMLTestRunnerNew import HTMLTestRunner from scripts.handle_config import do_config from cases import test_01_register from datetime import datetime from scripts.contants import REPORTS_DIR import os suite = unittest.TestSuite() loader = unittest.TestLoader() case = loader.loadTestsFromModule(test_01_register) suite.addTests(case) report_name = do_config.get_value('report', 'report_html_name') + datetime.strftime( datetime.now(), '%Y%m%d%H%M%S') + '.html' html_full_path = os.path.join(REPORTS_DIR, report_name) with open(html_full_path, mode='wb') as file: runner = HTMLTestRunner(stream=file, title='验证注册接口', tester='gordon', verbosity=2) runner.run(suite)
def test_recharge(self, one_case): case_id = one_case['case_id'] title = one_case['title'] data = one_case['data'] # 需要参数化, 将手机号替换 #换位recharge的参数化 new_data = HandleContext.recharge_paramaterization(data) #参数已经被正常实际好替换 do_logger.debug('获取到的data数据为:{},在第【{}】'.format(new_data, case_id + 1)) url = one_case['url'] total_url = do_config.get_value('requests', 'url_head') + url method = one_case['method'] expected = one_case['expected'] #充值之前查询金额 check_sql = one_case['check_sql'] if check_sql: check_sql = HandleContext.recharge_paramaterization(check_sql) mysql_data = self.handle_mysql.run_mysql(check_sql) amount_before_regarge = float( mysql_data['LeaveAmount']) # 返回decimal类型,需要用float转换 amount_before_regarge = round(amount_before_regarge, 2) header = do_config.get_eval_data('requests', 'login_headers') register_res = do_http_requests.to_request(method=method, url=total_url, data=new_data, headers=header) #real_result = login_res.json()['msg'] real_result = register_res.json().get('code') #返回是字符串格式json expected_result = expected msg = '测试' + title success_msg = do_config.get_value('msg', 'success_result') fail_msg = do_config.get_value('msg', 'fail_result') try: self.assertEqual(str(expected_result), real_result, msg=msg) if check_sql: #check_sql = HandleContext.recharge_paramaterization(check_sql) #充值后的金额 mysql_data = self.handle_mysql.run_mysql(check_sql) amount_after_regarge = float( mysql_data['LeaveAmount']) # 返回decimal类型,需要用float转换 amount_after_regarge = round(amount_after_regarge, 2) amount_expect_charge = json.loads(data, encoding='utf-8')['amount'] do_logger.debug('{}....类型{}, 在第【{}】行'.format( amount_expect_charge, type(amount_expect_charge), case_id + 1)) #将数据中计算出的充值前后的差值,再次转换为 取后2位小数 amount_sql_recharge = round( amount_after_regarge - amount_before_regarge, 2) self.assertEqual(amount_expect_charge, amount_sql_recharge, msg=msg) do_hanle_excel.write_case(case_id + 1, real_result, success_msg) do_logger.debug('{},用例执行成功,执行结果为:{}'.format(msg, success_msg)) except AssertionError as e: do_hanle_excel.write_case(case_id + 1, real_result, fail_msg) do_logger.debug('{},用例用例执行失败,结果为:{},失败原因:{}'.format( msg, fail_msg, e)) raise e
import pymysql import random from scripts.handle_config import do_config start_mobile_dict = do_config.get_eval_data('mobile phone', 'start_mobile') host = do_config.get_value('mysql','host') user=do_config.get_value('mysql','user') password=do_config.get_value('mysql','password') db_hand=do_config.get_value('mysql','db_hand') end_mobile = do_config.get_value('mobile phone','end_mobile') db = db_hand + end_mobile[1:3] table_name_hand=do_config.get_value('mysql','table_name_hand') table_name =table_name_hand + end_mobile[0] port=do_config.get_int('mysql','port') # print(host,type(host),user,type(user),password,type(password),db,type(db),port,type(port)) class DoMysql: def __init__(self,db_name=None): self.db=db_name if self.db == None: self.conn = pymysql.connect(host=host, user=user, password=password, db=db, port=port, charset='utf8', cursorclass=pymysql.cursors.DictCursor) else: self.conn = pymysql.connect(host=host, user=user, password=password, db=self.db, port=port,
# -*- coding: utf-8 -*- import unittest from scripts.handle_config import do_config from cases import test_01_register from datetime import datetime from scripts.contants import REPORTS_DIR, CASES_DIR from scripts.contants import CONFIGS_USER_ACCOUNTS from scripts.handle_user import generate_users from libs.HTMLTestRunnerNew import HTMLTestRunner import os if not os.path.exists(CONFIGS_USER_ACCOUNTS): # 如果用户账号坐在文件不存在,则创建账号 generate_users() #自动加载cases中的全部用例 suite = unittest.defaultTestLoader.discover(CASES_DIR, pattern='test_*.py') # report_name = do_config.get_value('report', 'report_html_name') + datetime.strftime(datetime.now(), '%Y%m%d%H%M%S') + '.html' report_name = do_config.get_value('report', 'report_html_name') + '.html' html_full_path = os.path.join(REPORTS_DIR, report_name) with open(html_full_path, mode='wb') as file: runner = HTMLTestRunner(stream=file, title='验证注册接口', tester='gordon', verbosity=2) runner.run(suite)