Python 通过配置文件 读取参数,执行测试用例,生成测试报告并发送邮件
#-*-coding:utf-8-*- #测试用例配置参数 #XXXXX_Uitest->baseinfo->__init__.py base_url = "http://XXXXxxxxx.com" undirect_username = "XXXX" undirect_password = "XXXXX" direct_username = XXXXX" direct_password = "xxxxxx" #发送邮件配置参数 Smtp_Server = 'smtp.mxhichina.com' Smtp_Sender = 'XXXXX@xxx。com' Smtp_Sender_Password = 'XXXXXXX' Smtp_Receiver = ['XXXXXX@123.cn','SSSSSS@123.cn'] #测试用例及报告路径配置参数 test_dir = './test_case' test_report = './test_report/'
#测试用例,测试代码
#test_cart.py
import unittest import os import time from selenium import webdriver from selenium.webdriver.common.keys import Keys class TestCart(unittest.TestCase): def setUp(self): print('setup') self.url = 'http://www.XXX.mm' self.driver = webdriver.Firefox() self.driver.implicitly_wait(5) self.driver.get(self.url) self.driver.maximize_window() print("open browser") #return self.driver def get_Info(self): filePath = os.path.join(os.getcwd(),'user_info') filename = filePath + '\\user_info.txt' print(filename) fo = open(filename, 'r') lines = fo.readlines() for data in lines: name,pwd = data.split(',') print(name, pwd) return name,pwd def test_to_login(self): '''验证是否登陆''' name,pwd = self.get_Info() time.sleep(5) print(name,pwd) self.driver.implicitly_wait(5) self.driver.find_element_by_id('new-username').clear() self.driver.find_element_by_id('new-username').send_keys(name) self.driver.find_element_by_id('new-password').clear() self.driver.find_element_by_id('new-password').send_keys(pwd) self.driver.implicitly_wait(5) #回车登陆,因为登陆按钮不好定位 self.driver.find_element_by_xpath("html/body/div[9]/div[3]/div[1]/div[1]/div[4]/span").send_keys(Keys.ENTER) self.driver.implicitly_wait(10) login_test = self.driver.find_element_by_xpath(".//*[@id='loginOut']").text self.assertEqual(login_test, '[退出]') def tearDown(self): print("tearDown") time.sleep(5) print("close browser") self.driver.quit() if __name__ == '__main__': unittest.main()
#runtest.py import smtplib import unittest import time import xlrd import os from HTMLTestRunner import HTMLTestRunner from email.header import Header from email.mime.text import MIMEText
#导入baseinfo import baseinfo from email.mime.multipart import MIMEMultipart def get_sender(): filePath = os.path.join(os.getcwd(),'user_info') print("get_sender") print(filePath) fileName = filePath + '\Mail_info.xlsx' print(fileName) readExcel = xlrd.open_workbook(fileName) sender = readExcel.sheet_by_name('sender') get_sender = sender.row_values(1) #print(get_sender) return get_sender def get_Receiver(): filePath = os.path.join(os.getcwd(),'user_info') fileName = filePath + '\Mail_info.xlsx' print("get_Receiver()") print(fileName) readExcel = xlrd.open_workbook(fileName) receiver_sheet = readExcel.sheet_by_name('receiver') receiver_temp = receiver_sheet.col_values(0) getReceiver = receiver_temp[1:] print(getReceiver) print(type(getReceiver)) return getReceiver def get_NewReport(testreport): dirs = os.listdir(testreport) dirs.sort() newreportname = dirs[-1] print('The new report name: {0}'.format(newreportname)) file_new = os.path.join(testreport, newreportname) print(file_new) return file_new def send_Mail(file_new): f = open(file_new, 'rb') # 读取测试报告正文 mail_body = f.read() f.close() try: #通过 baseinfo 引用 __init__ 初始化的参数值 smtp = smtplib.SMTP(baseinfo.Smtp_Server, 25) sender = baseinfo.Smtp_Sender password = baseinfo.Smtp_Sender_Password receiver = baseinfo.Smtp_Receiver smtp.login(sender, password) msg = MIMEMultipart() # 编写html类型的邮件正文,MIMEtext()用于定义邮件正文 # 发送正文 text = MIMEText(mail_body, 'html', 'utf-8') text['Subject'] = Header('自动化测试报告', 'utf-8') msg.attach(text) # 发送附件 # Header()用于定义邮件标题 msg['Subject'] = Header('自动化测试报告', 'utf-8') msg_file = MIMEText(mail_body, 'html', 'utf-8') msg_file['Content-Type'] = 'application/octet-stream' msg_file["Content-Disposition"] = 'attachment; filename="TestReport.html"' msg.attach(msg_file) #定义发件人,如果不写,发件人为空 msg['From'] = sender #定义收件人,如果不写,收件人为空 msg['To'] = ",".join(receiver) tmp = smtp.sendmail(sender, receiver, msg.as_string()) print(receiver) print(tmp) smtp.quit() return True except smtplib.SMTPException as e: print(str(e)) return False if __name__ == '__main__': test_dir = os.path.join(os.getcwd(),'test_case') print(test_dir) report_dir = os.path.join(os.getcwd(),'report') test_discover = unittest.defaultTestLoader.discover(test_dir,pattern='test*.py') print("test_discover") now = time.strftime("%Y-%m-%d-%H_%M_%S") filename = report_dir+'/result-'+now+'.html' fp = open(filename, 'wb') runner = HTMLTestRunner(stream = fp, title = 'UI自动化测试报告', description = '用例执行情况') #runner = unittest.TextTestRunner() runner.run(test_discover) fp.close() new_report = get_NewReport(report_dir) mail = send_Mail(new_report) if mail: print("发送成功!") else: print("发送失败!")
您的资助是我最大的动力!
金额随意,欢迎来赏!
您的资助是我最大的动力!
金额随意,欢迎来赏!
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的
因为,我的写作热情也离不开您的肯定与支持,感谢您的阅读,我是【Blue●Sky】!
【Selenium-Python】技术交流群期待你的加入【 193056556 】