def run_test(self): data = Excel().get_xls(r"{}/K8S_call_log_save_testdata/data.xlsx".format(TEST_DATA_DIR), "call_log_data") result_data=K8sCallLogSave().run(data) # 获取到接口返回信息 Excel().write_newxls(result_data,self.report_excel,sheet="call_log_data2") #生成测试报告文件--excel time.sleep(2) connectEmail=SendEmail(self.email["addresser"],self.email["addressee"],self.email["smtp"],self.email["user"],self.email["passwd"]) #连接邮箱 connectEmail.email_init(self.report_excel,self.excel_name) #把测试报告发送到指定邮箱 DelDate().del_run(num=3) #删除本地excel文件 self.log.info ("----程序结束----")
def runner_function(self): ''' 用来控制runner的主流程方法 用例加载方式 报告发送模板 发送邮件 :return: ''' self.report_type_control(self.runner_run_type_control()) time.sleep(10) email_title = self.email_title SendEmail().send_email(self.report_path, email_title)
def test_on_run(self): self.base = Base() self.data = GetData() self.send_email = SendEmail() pass_count = [] fail_count = [] rows_count = self.data.get_case_lines() for i in range(1, rows_count): is_run = self.data.get_run(i) if is_run: case_name = self.data.get_case_name(i) url = self.data.get_url(i) method = self.data.get_request_method(i) request_data = self.data.get_json_data(i) data = json.dumps(request_data) header = self.data.get_header(i) expect = self.data.get_expcet(i) depend_case = self.data.is_depend(i) depend_data = DepandentData(depend_case) log.info('------执行用例:%s' % case_name) log.info('inputdata> 参数:%s,预期结果:%s' % (data, expect)) if depend_case != None: # 获取的依赖响应数据 depend_response_data = depend_data.get_data_for_key(i) # 获取依赖的key depend_key = self.data.get_depend_field(i) request_data[depend_key] = depend_response_data # self,url,method,data=None,header=None # res=self.base.run_main(url,method,request_data,header) if header == 'write': res = self.base.run_main(url, method, request_data) op_header = OperationHeader(res) op_header.write_cookie() elif header == 'yes': op_json = ReadJson() cookie = op_json.read_cookie('apsid') cookies = {'apsid': cookie} res = self.base.run_main(url, method, request_data, cookies) else: res = self.base.run_main(url, method, request_data) # print (type(res)) if self.base.is_contain(expect, res): self.data.write_result(i, "pass") log.info('------用例测试通过,实际结果:%s' % res) #统计通过的用例数 pass_count.append(1) else: self.data.write_result(i, res) log.info('----用例测试失败,返回结果:%s' % res) #统计失败的用例数 fail_count.append(i) log.info('所有用例测试完成,成功数:%s,失败数:%s' % (len(pass_count), len(fail_count)))
discover = unittest.defaultTestLoader.discover(test_dir, pattern='case*.py') # 按照一定格式获取当前时间 now = time.strftime("%Y-%m-%d %H.%M") # 定义报告存放路径和文件名 filename = test_report + "\\" + now + 'result.html' fp = open(filename, 'wb') # 定义测试报告 runner = HTMLTestRunner(stream=fp, title='接口自动化测试报告', description='用例执行情况:') runner.run(discover) # 运行测试用例 fp.close() # 关闭报告文件 # 发送邮件开关is_debug,debug模式下,不发送邮件 if GetValue.is_debug == 'False': # 实例化对象 demo = SendEmail(test_report) # 获取最新报告 new_report = demo.new_report() # 发送测试报告 demo.send_mail(new_report) # WebHook WebHook().web_hook('接口自动化测试任务结束', GetValue.web_hook_phone) else: pass
from scripts.test_partnershow import Test_PartnerShow from scripts.test_login import Test_login from common.HTMLTestRunner import HTMLTestRunner from common.send_email import SendEmail if __name__ == '__main__': # suite = unittest.TestSuite() # suite.addTest(Test_login('test_login')) # suite.addTest(Test_PartnerShow('test_show')) # 简写 # suite = [Test_PartnerShow('test_show'), Test_PartnerShow('test_show')] # unittest.TextTestRunner().run(suite) discover = unittest.defaultTestLoader.discover("./scripts/", pattern="test*.py") dir_path = "./report/" nowtime = time.strftime("%Y_%m_%d %H_%M_%S") report_name = dir_path + nowtime + "report.html" with open(report_name, 'wb') as f: HTMLTestRunner(stream=f, title='PAI_daodangui', description='win10,Python3', verbosity=2).run(discover) f.close() user_list = ['*****@*****.**'] sub = "接口自动化测试" content = "倒蛋鬼接口测试报告" SendEmail().send_email(user_list, sub, content, report_name)
def start_test(self): suite = GetMethods() suite.FromClassName(loginCase) self.htmlreport.write_html(self.version) Myzip.compress_file(self.version) SendEmail.send_email(self.version)
def tearDownClass(cls): cls.send = SendEmail(cls.pass_count, cls.fail_count) cls.send.send_email()