python3.6+selenium3.13 自动化测试项目实战一(增加自动发送邮件报告接口)
2018-07-17 13:24
861 查看
说明:
继实战项目一的基础上添加自动发送报告邮件接口,代码有部分调整,可以结合实战一和上篇文章学习
变动:
1.增加文本文档SendToUserinfo.txt 用来保存邮件接收者的信息
2.修改测试报告文件名称格式并添加reprot目录保存测试报告
3.添加代码注释,更方便阅读
项目目录:
#! user/bin/python ''' 代码说明:麦子学院登录模块自动化测试用例脚本 编写日期: 设置者:linux超 ''' import time from selenium import webdriver from webinfo import webinfo from userinfo import userinfo from log_fiile import login_log from send_email import send_mail_init_info,read_SendToUserinfo_file #account = '281754043@qq.com' def open_web(): ''' :return:web句柄 ''' driver = webdriver.Firefox() driver.maximize_window() return driver def load_url(driver,ele_dict): ''' :param driver: web主页面句柄 :param ele_dict: web信息字典(从文件中读取) :return: 无 ''' driver.get(ele_dict['Turl']) time.sleep(5) def find_element(driver,ele_dict): ''' :param driver: web句柄 :param ele_dict: web信息字典(从文件中读取) :return: 返回找到的元素 ''' driver.find_element_by_class_name(ele_dict['image_id']).click() if 'text_id' in ele_dict: driver.find_element_by_link_text('登录').click() user_id = driver.find_element_by_id(ele_dict['userid']) pwd_id = driver.find_element_by_id(ele_dict['pwdid']) login_id = driver.find_element_by_id(ele_dict['loginid']) return user_id,pwd_id,login_id def send_val(ele_tuple,arg): ''' :param ele_tuple: web元素 :param arg: 可变长参数,接收用户名和密码 :return: 无 ''' # input userinfo listkey = ['uname','pwd'] i = 0 for key in listkey: ele_tuple[i].send_keys('') ele_tuple[i].clear() ele_tuple[i].send_keys(arg[key]) i+=1 ele_tuple[2].click() # 判断登录是否成功,并写入测试报告 def check_login(driver,ele_dict,log,userlist): ''' :param driver: web句柄 :param ele_dict: 读取到的元素信息(文件中读到的) :param log: login_log对象 :param userlist: 用户信息(文件中读取) :return: False or Ture ''' result = False time.sleep(3) try: err = driver.find_element_by_id(ele_dict['error']) driver.save_screenshot(err.text+'.png') log.log_write('账号:%s 密码:%s 提示信息:%s:failed\n' %(userlist['uname'],userlist['pwd'],err.text)) print('username or password error') except: print('login success!') log.log_write('账号:%s 密码:%s :passed\n'%(userlist['uname'],userlist['pwd'])) #login_out(driver,ele_dict) return True return result # 登出 def login_out(driver,ele_dict): time.sleep(5) driver.find_element_by_class_name(ele_dict['logout']).click() ''' def screen_shot(err): i = 0 save_path = r'D:\pythondcode\capture' capturename = '\\'+str(i)+'.png' wholepath = save_path+capturename if Path(save_path).is_dir(): pass else: Path(save_path).mkdir() while Path(save_path).exists(): i+=1 capturename = '\\'+str(i)+'.png' wholepath = save_path + capturename err.screenshot(wholepath) ''' def login_test(): log = login_log() msg = read_SendToUserinfo_file(r'D:\pythoncode\login_test\SendToUserinfo.txt') sendmail = send_mail_init_info('smtp.qq.com','281754043@qq.com','gifhhsbgqyovbhhc','281754043@qq.com',msg) #ele_dict = {'url': 'http://www.maiziedu.com/', 'text_id': '登录', 'user_id': 'id_account_l', 'pwd_id': 'id_password_l' #, 'login_id': 'login_btn','image_id':'close-windows-btn7','error_id':'login-form-tips'} ele_dict = webinfo(r'D:\pythoncode\webinfo.txt') #user_list=[{'uname':account,'pwd':pwd}] user_list = userinfo(r'D:\pythoncode\userinfo.txt') driver = open_web() # load url load_url(driver,ele_dict) #find element ele_tuple = find_element(driver,ele_dict) # send values ftitle = time.strftime('%Y-%m-%d', time.gmtime()) log.log_write('\t\t\t%s登录系统测试报告\n' % (ftitle)) # 循环用户测试数据 for userlist in user_list: send_val(ele_tuple,userlist) # check login success or failed result = check_login(driver,ele_dict,log,userlist) if result: login_out(driver,ele_dict) time.sleep(3) ele_tuple = find_element(driver,ele_dict) time.sleep(3) log.log_close() # 关闭log文件 # 发送报告到指定的邮箱 sendmail.send_email(log.filename) driver.quit() if __name__ == '__main__': login_test()View Code log_fiile.py
#! user/bin/python ''' 代码说明:测试输出报告 编写日期: 设置者:linux超 ''' import time # 测试报告输出接口 class login_log(object): filename = './report/' + time.strftime('%Y-%m-%d %H_%M_%S') + '.txt' def __init__(self,path='./report/',mode='w'): #filename = path + time.strftime('%Y-%m-%d %H_%M_%S') +'.txt' self.log = open(self.filename,mode) def log_write(self,msg): self.log.write(msg) def log_close(self): self.log.close() if __name__ == '__main__': log=login_log() log.log_write('xiaochao11520') mas = log.filename print(mas) log.log_close()View Code
send_email.py
#! user/bin/python ''' 代码说明:通过邮件发送测试报告 编写日期:2018.07.17 设置者:linux超 ''' import smtplib from email.mime.text import MIMEText from email.header import Header # 邮件发送接口 class send_mail_init_info(object): ''' 邮件配置信息 ''' def __init__(self,server,fromuser,frompassword,sender,receiver): self.server = server self.fromuser = fromuser self.frompassword = frompassword self.sender = sender self.receiver = receiver ''' 配置邮件发送者等信息 ''' def send_email(self,filename): # 打开报告文件读取文件内容 #filename = './report/'+ time.strftime('%Y-%m-%d %H_%M_%S') f = open(filename,'r') file_msg = f.read() print(filename) print(file_msg) f.close() # 邮件服务器 smtpserver = self.server # 发件人用户名和密码 user = self.fromuser password = self.frompassword # 发件人 sender = self.sender # 收件人 receiver = self.receiver # 邮件主题 subject = 'Python test report' #+ filename # 邮件设置 msg = MIMEText(file_msg,'html','utf-8') msg['subject'] = Header(subject,'utf-8') msg['from'] = sender # 连接服务器,登录服务器,发送邮件 self.smtp = smtplib.SMTP() self.smtp.connect(smtpserver) self.smtp.login(user,password) try: self.smtp.sendmail(sender, receiver, msg.as_string()) except Exception as e: print('send failed', e) else: print('send success!') def __del__(self): self.smtp.quit() # 从文件中读取邮件接收人信息 def read_SendToUserinfo_file(filename): ''' :param filename: 读取接收邮件人信息 :return: 接手邮件人信息 ''' open_file = open(filename) read_msg = open_file.read() return read_msg if __name__ == '__main__': #send_email('./report/2018-07-16 13_09_21.txt') read_msg=read_SendToUserinfo_file(r'D:\pythoncode\login_test\SendToUserinfo.txt') sendmail = send_mail_init_info('smtp.qq.com','281754043@qq.com','gifhhsbgqyovbhhc','281754043@qq.com',read_msg) sendmail.send_email('./report/2018-07-16 13_09_21.txt')View Code
刚测试这里面的def read_SendToUserinfo_file(filename) 方法有点问题,现在修改一下,如下:
def read_SendToUserinfo_file(filename): ''' :param filename: 读取接收邮件人信息 :return: 接手邮件人信息 ''' open_file = open(filename) #read_msg = open_file.read() #return read_msg for line in open_file: msg = [i.strip() for i in line.split(',')] print(msg) return msg
SendToUserinfo.txt 文件内的信息用‘,’号分割开
281754043@qq.com,486668776@qq.comView Code
总结:目前这个小项目所有最基本的功能都有了 , 我会慢慢的再完善,毕竟是学习,希望把它完善的越来越好,自己动手知识记得的牢固一点
相关文章推荐
- 最完整的自动化测试流程:Python编写执行测试用例及定时自动发送最新测试报告邮件
- 最完整的自动化测试流程:Python编写执行测试用例及定时自动发送最新测试报告邮件
- 最完整的自动化测试流程:Python编写执行测试用例及定时自动发送最新测试报告邮件
- selenium2+python3自动化2-csdn写博客(邮件发送附件测试报告)
- (转载)最完整的自动化测试流程:Python编写执行测试用例及定时自动发送最新测试报告邮件
- 最完整的自动化测试流程:Python编写执行测试用例及定时自动发送最新测试报告邮件
- Python发送邮件以及自动化测试报告的生成
- python+selenium 自动化测试入门示例(邮件发送)
- Selenium2 Python 自动化测试实战学习笔记(四)
- testng+maven+java+idea 接口测试入门四:查看测试报告并将测试结果发送邮件
- Selenium2 Python 自动化测试实战学习笔记(二)
- 使用Ant构建web项目 从编译到测试 生成测试报告 打包 邮件发送 远程下载tomcat 部署运行一条龙服务之ant脚本
- Java+Selenium3框架设计篇5-如何实现邮件发送测试报告
- 基于Python的Selenium自动化(4)—如何生成测试报告
- python 支持自动群发测试报告邮件到指定的邮箱
- 6.Python-Selenium测试报告生成(通过接口)-淘宝视频教程笔记
- 软件自动化 接口测试框架干货,群友写的(python)有Excel输出报告,也有读取Excel接口用例文件
- Selenium2 Python 自动化测试实战学习笔记
- Selenium2 Python 自动化测试实战学习笔记(六)