def test_case(self, case_value): # print('\nRunning Test Method: {}'.format(inspect.stack()[0][3])) do_log.info('\nRunning Test Method: {}'.format(inspect.stack()[0][3])) # data_namedtuple = cases_list.pop(0) case_id = case_value.case_id msg = case_value.title new_url = do_config("api", 'prefix_url') + case_value.url new_data = Context.add_parameterization(case_value.data) method = case_value.method expect_result = case_value.expected actual_result = self.do_request(method, new_url, new_data).text # 将实际结果写入excel # ws.cell(row=case_id + 1, column=6, value=actual_result) try: self.assertEqual(actual_result, expect_result, msg='测试{}失败'.format(msg)) except AssertionError as e: # print('具体异常为:{}'.format(e)) do_log.error('具体异常为:{}'.format(e)) # self.file.write('{},执行结果:{},具体异常为:{}\n'.format(msg, 'Fail', e)) # self.file.write('{},执行结果:{},具体异常为:{}\n'.format(msg, do_config('msg', 'fail_result'), e)) # ws.cell(row=case_id + 1, column=7, value='Fail') # self.handle_excel.write_result(case_id + 1, actual_result, 'Fail') do_excel.write_result(case_id + 1, actual_result, do_config('msg', 'fail_result')) raise e else: # self.file.write('{},执行结果:{}\n'.format(msg, 'Pass')) # self.file.write('{},执行结果:{}\n'.format(msg, do_config('msg', 'success_result'))) # ws.cell(row=case_id + 1, column=7, value='Pass') # self.handle_excel.write_result(case_id + 1, actual_result, 'Pass') do_excel.write_result(case_id + 1, actual_result, do_config('msg', 'success_result'))
def __init__(self): self.case_logger = logging.getLogger(do_config('log', 'logger_name')) self.case_logger.setLevel(do_config('log', 'logger_level')) console_output = logging.StreamHandler() # file_output = RotatingFileHandler(filename=os.path.join(LOG_DIR, do_config('log', 'logger_name')), # maxBytes=do_config('log', 'maxBytes'), # backupCount=do_config('log', 'backupCount'), # encoding='utf8') file_output = ConcurrentRotatingFileHandler( filename=os.path.join(LOG_DIR, do_config('log', 'logger_name')), maxBytes=do_config('log', 'maxBytes'), backupCount=do_config('log', 'backupCount'), encoding='utf8') console_output.setLevel(do_config('log', 'console_level')) file_output.setLevel(do_config('log', 'file_level')) simple_formatter = logging.Formatter( do_config('log', 'simple_formatter')) verbose_formatter = logging.Formatter( do_config('log', 'verbose_formatter')) console_output.setFormatter(simple_formatter) file_output.setFormatter(verbose_formatter) self.case_logger.addHandler(console_output) self.case_logger.addHandler(file_output)
def test_case(self, case_value): # print('\nRunning Test Method: {}'.format(inspect.stack()[0][3])) do_log.info('\nRunning Test Method: {}'.format(inspect.stack()[0][3])) # data_namedtuple = cases_list.pop(0) case_id = case_value.case_id msg = case_value.title new_url = do_config("api", 'prefix_url') + case_value.url new_data = Context.login_parameterization(case_value.data) method = case_value.method expect_result = case_value.expected check_sql = case_value.check_sql if check_sql: check_sql = Context.login_parameterization(check_sql) mysql_result = self.do_mysql.sql_execute(check_sql) # decimal类型数据,需要转化为float money_before_recharge = float(mysql_result['LeaveAmount']) money_before_recharge = round(money_before_recharge, 2) # 四舍五入保留两位小数 actual_result = self.do_request(method, new_url, new_data) try: self.assertEqual(200, actual_result.status_code, msg='测试{}时,请求失败!状态码为{}'.format(case_value.title, actual_result.status_code)) except AssertionError as e: do_log.error('具体异常为:{}'.format(e)) raise e # 将实际结果写入excel # ws.cell(row=case_id + 1, column=6, value=actual_result) try: self.assertEqual(int(actual_result.json()['code']), expect_result, msg='测试{}失败'.format(msg)) if check_sql: check_sql = Context.login_parameterization(check_sql) mysql_result = self.do_mysql.sql_execute(check_sql) # decimal类型数据,需要转化为float money_after_recharge = float(mysql_result['LeaveAmount']) money_after_recharge = round(money_after_recharge, 2) # 四舍五入保留两位小数 new_data_dict = json.loads(new_data, encoding='utf8') current_recharge_money = float(new_data_dict['amount']) actual_money = round(current_recharge_money+money_before_recharge, 2) self.assertEqual(actual_money, money_after_recharge, msg="数据库中充值后的金额有误") except AssertionError as e: # print('具体异常为:{}'.format(e)) do_log.error('具体异常为:{}'.format(e)) # self.file.write('{},执行结果:{},具体异常为:{}\n'.format(msg, 'Fail', e)) # self.file.write('{},执行结果:{},具体异常为:{}\n'.format(msg, do_config('msg', 'fail_result'), e)) # ws.cell(row=case_id + 1, column=7, value='Fail') # self.handle_excel.write_result(case_id + 1, actual_result, 'Fail') do_excel.write_result(case_id + 1, int(actual_result.json()['code']), do_config('msg', 'fail_result')) raise e else: # self.file.write('{},执行结果:{}\n'.format(msg, 'Pass')) # self.file.write('{},执行结果:{}\n'.format(msg, do_config('msg', 'success_result'))) # ws.cell(row=case_id + 1, column=7, value='Pass') # self.handle_excel.write_result(case_id + 1, actual_result, 'Pass') do_excel.write_result(case_id + 1, int(actual_result.json()['code']), do_config('msg', 'success_result'))
def test_case(self, case_value): # print('\nRunning Test Method: {}'.format(inspect.stack()[0][3])) do_log.info('\nRunning Test Method: {}'.format(inspect.stack()[0][3])) # data_namedtuple = cases_list.pop(0) case_id = case_value.case_id setattr(Context, 'case_id', 1) msg = case_value.title url = case_value.url data3 = Context.user_verify_parameterization(case_value.data) method = case_value.method expect_result = case_value.expected actual_result = str(Webservice(url, data3, method).result_output()) if case_id == 1: user_data = {'user_auth': data3} do_config.write_config(user_data, "user_data2.ini") if case_id == 2: sql = "DELETE f1,f2 FROM `t_user_info` AS f1 LEFT JOIN `t_user_auth_info` AS f2 ON f1.Fuid=f2.Fuid WHERE f2.Fuid=%s" self.do_mysql.sql_execute(sql, args=(do_config2("user_auth", "uid"))) if case_id == do_excel.ws.max_row - 1: os.remove(CONFIG_USER_FILE_PATH2) # try: # self.assertEqual(200, # actual_result.status_code, # msg='测试{}时,请求失败!状态码为{}'.format(case_value.title, actual_result.status_code)) # except AssertionError as e: # do_log.error('具体异常为:{}'.format(e)) # raise e # 将实际结果写入excel # ws.cell(row=case_id + 1, column=6, value=actual_result) try: self.assertEqual(actual_result, expect_result, msg='测试{}失败'.format(msg)) except AssertionError as e: # print('具体异常为:{}'.format(e)) do_log.error('具体异常为:{}'.format(e)) # self.file.write('{},执行结果:{},具体异常为:{}\n'.format(msg, 'Fail', e)) # self.file.write('{},执行结果:{},具体异常为:{}\n'.format(msg, do_config('msg', 'fail_result'), e)) # ws.cell(row=case_id + 1, column=7, value='Fail') # self.handle_excel.write_result(case_id + 1, actual_result, 'Fail') do_excel.write_result(case_id + 1, actual_result, do_config('msg', 'fail_result')) raise e else: # self.file.write('{},执行结果:{}\n'.format(msg, 'Pass')) # self.file.write('{},执行结果:{}\n'.format(msg, do_config('msg', 'success_result'))) # ws.cell(row=case_id + 1, column=7, value='Pass') # self.handle_excel.write_result(case_id + 1, actual_result, 'Pass') do_excel.write_result(case_id + 1, actual_result, do_config('msg', 'success_result'))
def test_case(self, case_value): # print('\nRunning Test Method: {}'.format(inspect.stack()[0][3])) do_log.info('\nRunning Test Method: {}'.format(inspect.stack()[0][3])) # data_namedtuple = cases_list.pop(0) case_id = case_value.case_id msg = case_value.title url = case_value.url data2 = Context.register_parameterization(case_value.data) if case_id == 1: if os.path.exists(CONFIG_USER_FILE_PATH): pass else: user_data = { 'user_info': { 'mobile': data2['mobile'], 'user_id': data2['user_id'], 'verify_code': data2['verify_code'] } } do_config.write_config(user_data, "user_data.ini") do_config.write_config(user_data, "user_data2.ini") method = case_value.method expect_result = case_value.expected actual_result = str(Webservice(url, data2, method).result_output()) if case_id == do_excel.ws.max_row - 1: os.remove(CONFIG_USER_FILE_PATH) # 将实际结果写入excel # ws.cell(row=case_id + 1, column=6, value=actual_result) try: self.assertEqual(actual_result, expect_result, msg='测试{}失败'.format(msg)) except AssertionError as e: # print('具体异常为:{}'.format(e)) do_log.error('具体异常为:{}'.format(e)) # self.file.write('{},执行结果:{},具体异常为:{}\n'.format(msg, 'Fail', e)) # self.file.write('{},执行结果:{},具体异常为:{}\n'.format(msg, do_config('msg', 'fail_result'), e)) # ws.cell(row=case_id + 1, column=7, value='Fail') # self.handle_excel.write_result(case_id + 1, actual_result, 'Fail') do_excel.write_result(case_id + 1, actual_result, do_config('msg', 'fail_result')) raise e else: # self.file.write('{},执行结果:{}\n'.format(msg, 'Pass')) # self.file.write('{},执行结果:{}\n'.format(msg, do_config('msg', 'success_result'))) # ws.cell(row=case_id + 1, column=7, value='Pass') # self.handle_excel.write_result(case_id + 1, actual_result, 'Pass') do_excel.write_result(case_id + 1, actual_result, do_config('msg', 'success_result'))
def create_new_user(regname, pwd="123456"): """ 创建一个用户 :param regname: :param pwd: :return: """ do_request = HttpRequest() do_mysql = HandleMysql() url = do_config("api", "prefix_url") + "/member/register" sql = "SELECT * FROM future.`member` WHERE `MobilePhone`=%s;" while True: mobilephone = do_mysql.create_not_existed_mobile() data = {"mobilephone": mobilephone, "pwd": pwd, "regname": regname} do_request(method="post", url=url, params=data) result = do_mysql.sql_execute(sql=sql, args=(mobilephone, )) if result: user_id = result['Id'] break user_dict = { regname: { "Id": user_id, "regname": regname, "mobilephone": mobilephone, "pwd": pwd } } do_request.close() do_mysql.close() return user_dict
def test_case(self, case_value): """ 注册功能用例 :param case_value: :return: """ # print('\nRunning Test Method: {}'.format(inspect.stack()[0][3])) do_log.info('\nRunning Test Method: {}'.format(inspect.stack()[0][3])) # data_namedtuple = cases_list.pop(0) case_id = case_value.case_id msg = case_value.title url = case_value.url data1 = eval(Context.mobile_replace(case_value.data)) method = case_value.method expect_result = case_value.expected actual_result = str(Webservice(url, data1, method).result_output()) # 将实际结果写入excel # ws.cell(row=case_id + 1, column=6, value=actual_result) try: self.assertEqual(actual_result, expect_result, msg='测试{}失败'.format(msg)) except AssertionError as e: # print('具体异常为:{}'.format(e)) do_log.error('具体异常为:{}'.format(e)) # self.file.write('{},执行结果:{},具体异常为:{}\n'.format(msg, 'Fail', e)) # self.file.write('{},执行结果:{},具体异常为:{}\n'.format(msg, do_config('msg', 'fail_result'), e)) # ws.cell(row=case_id + 1, column=7, value='Fail') # self.handle_excel.write_result(case_id + 1, actual_result, 'Fail') do_excel.write_result(case_id + 1, actual_result, do_config('msg', 'fail_result')) raise e else: # self.file.write('{},执行结果:{}\n'.format(msg, 'Pass')) # self.file.write('{},执行结果:{}\n'.format(msg, do_config('msg', 'success_result'))) # ws.cell(row=case_id + 1, column=7, value='Pass') # self.handle_excel.write_result(case_id + 1, actual_result, 'Pass') do_excel.write_result(case_id + 1, actual_result, do_config('msg', 'success_result'))
def write_result(self, row, actual, result): """ 将实际值与测试用例执行的结果保存到excel中 :param row: 保存到哪一行 :param actual: 实际值 :param result: 测试用例执行的结果,“Pass”, “Fail” :return: """ other_wb = load_workbook(self.filename) other_ws = other_wb[self.sheetname] if isinstance(row, int) and (2 <= row <= other_ws.max_row): other_ws.cell(row=row, column=do_config("excel", "actual_col"), value=actual) other_ws.cell(row=row, column=do_config("excel", "result_col"), value=result) other_wb.save(self.filename) other_wb.close() else: print("传入的行号有误,行号应为大于1的整数")
def is_existed_mobile(self, mobile): """ 判断给定的手机号在数据库中是否存在 :param mobile: 待判断的手机号 :return: True、False """ db_name = do_config('mysql', 'sms_db') + mobile[9:] form_name = "t_mvcode_info_" + mobile[8:9] sql = "SELECT * FROM {}.`{}` WHERE `Fmobile_no`={}".format( db_name, form_name, mobile) if self.sql_execute(sql): return True else: return False
def __init__(self): self.conn = pymysql.connect( host=do_config('mysql', 'host'), port=do_config('mysql', 'port'), db=do_config('mysql', 'db'), user=do_config('mysql', 'user'), password=do_config('mysql', 'password'), charset=do_config('mysql', 'charset'), cursorclass=pymysql.cursors.DictCursor, ) self.cursor = self.conn.cursor()
# file = open('test_result_3.txt', mode='w', encoding='utf8') # 创建一个运行器对象,将测试结果存放到文件中 # runner = unittest.TextTestRunner(stream=file, descriptions='测试报告', verbosity=2) # runner.run(suite) # 关闭文件 # file.close() # 上下文管理器,无需关闭文件 # with open('test_result_3.txt', mode='w', encoding='utf8') as file: # runner = unittest.TextTestRunner(stream=file, descriptions='测试报告', verbosity=2) # runner.run(suite) # 美化报告 # runner = HTMLTestRunner(output='report', report_name='测试报告', report_title='测试报告标题', combine_reports=True) # runner.run(suite) # 进一步美化报告 report_path = os.path.join(REPORT_DIR, do_config('report', 'report_path')) report_path_full = report_path + '_' + datetime.strftime( datetime.now(), '%Y%m%d%H%M%S') + '.html' with open(report_path_full, mode='wb') as file: runner = HTMLTestRunnerNew.HTMLTestRunner( stream=file, title=do_config('report', 'title'), verbosity=do_config('report', 'verbosity'), description=do_config('report', 'description'), tester=do_config('report', 'tester')) runner.run(suite) # 执行结果中,一个"."代表执行成功一条用例,一个"F"代表执行失败一条用例
def __init__(self, end_num=None): if end_num is not None: self.conn = pymysql.connect( host=do_config('mysql', 'host'), port=do_config('mysql', 'port'), db=do_config('mysql', 'sms_db') + end_num, user=do_config('mysql', 'user'), password=do_config('mysql', 'password'), charset=do_config('mysql', 'charset'), cursorclass=pymysql.cursors.DictCursor, ) else: self.conn = pymysql.connect( host=do_config('mysql', 'host'), port=do_config('mysql', 'port'), db=do_config('mysql', 'user_db'), user=do_config('mysql', 'user'), password=do_config('mysql', 'password'), charset=do_config('mysql', 'charset'), cursorclass=pymysql.cursors.DictCursor, ) self.cursor = self.conn.cursor()
# if method == getattr(Webservice, 'send_m_code'): # self.result = Client(self.url1).service.sendMCode(params) # # if method == getattr(Webservice, 'user_register'): # self.result = Client(self.url2).service.userRegister(params) # # if method == getattr(Webservice, 'verify_user_auth'): # self.result = Client(self.url2).service.verifyUserAuth(params) # # if method == getattr(Webservice, 'bind_bank_card'): # self.result = Client(self.url2).service.bindBankCard(params) def result_output(self): return self.result if __name__ == '__main__': params1 = { "client_ip": "180.14.45.3", "mobile": "13711223344", "tmpl_id": "1" } # setattr(Webservice, 'send_m_code', 'send_m_code') # setattr(Webservice, 'user_register', 'user_register') # setattr(Webservice, 'verify_user_auth', 'verify_user_auth') # setattr(Webservice, 'bind_bank_card', 'bind_bank_card') do_webservice = Webservice(do_config("api", "send_m_code_url"), params1, 'sendMCode') result = do_webservice.result_output() print(result)