selenium自动化架构+自动发邮件

来源:互联网 发布:淘宝皓月岛 编辑:程序博客网 时间:2024/05/22 00:32

结构搭建如上:

test_case 放置待测试的py 公用文件放置在子目录public下

进行驱动全部测试文件all_tests.py放置在 test_case同一目录下

all_tests:

#!/usr/bin/env python#coding=utf-8import unittestimport time,os,datetimefrom test_case import start_baidute,start_youdao,start_webcloudimport HTMLTestRunnerimport smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom email.mime.image import MIMEImage#方法1# import sys# #把test_case 目录添加到path下,这里用的相对路径# sys.path.append("\test_case")# import all_tests_list## #将用例组装数组# alltestnames=all_tests_list.caselist()# #创建测试套件# testunit=unittest.TestSuite()# for test in alltestnames:#     testunit.addTest(unittest.makeSuite(test))#方法2 创建测试用例# testunit.addTest(unittest.makeSuite(baidute.Baidu))# testunit.addTest(unittest.makeSuite(youdao.Youdao))# testunit.addTest(unittest.makeSuite(webcloud.Login))#runner=unittest.TextTestRunner()#runner.run(testunit)#方法3 用discover方法获得结构listaa="C:\\Users\\lww\\PycharmProjects\\study\\test_case"def createsuite():    testunit=unittest.TestSuite()    discover=unittest.defaultTestLoader.discover(listaa,                                                 pattern='start_*.py',                                                 top_level_dir=None)    for test_suite in discover:        for test_case in test_suite:            testunit.addTest(test_case)            print(testunit)    return testunitalltestnames=createsuite()#取当前时间now=time.strftime("%Y-%m-%d-%H_%M_%S",time.localtime(time.time()))#把当前时间加到报告中filename="E:\\abc\\report\\"+now+'result.html'fp=open(filename,'wb')runner=HTMLTestRunner.HTMLTestRunner(     stream=fp,     title=u'百度有道测试报告',     description=u'用例执行情况:' )runner.run(alltestnames)
配合自动化发测试报告邮件,all_tessts.py代码如下:
#!/usr/bin/env python#coding=utf-8import unittestimport time,os,datetimefrom test_case import start_baidute,start_youdao,start_webcloudimport HTMLTestRunnerimport smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom email.mime.image import MIMEImage#方法1# import sys# #把test_case 目录添加到path下,这里用的相对路径# sys.path.append("\test_case")# import all_tests_list## #将用例组装数组# alltestnames=all_tests_list.caselist()# #创建测试套件# testunit=unittest.TestSuite()# for test in alltestnames:#     testunit.addTest(unittest.makeSuite(test))#方法2 创建测试用例# testunit.addTest(unittest.makeSuite(baidute.Baidu))# testunit.addTest(unittest.makeSuite(youdao.Youdao))# testunit.addTest(unittest.makeSuite(webcloud.Login))#runner=unittest.TextTestRunner()#runner.run(testunit)#方法3 用discover方法获得结构listaa="C:\\Users\\lww\\PycharmProjects\\study\\test_case"def createsuite():    testunit=unittest.TestSuite()    discover=unittest.defaultTestLoader.discover(listaa,                                                 pattern='start_*.py',                                                 top_level_dir=None)    for test_suite in discover:        for test_case in test_suite:            testunit.addTest(test_case)            print(testunit)    return testunitalltestnames=createsuite()#取当前时间now=time.strftime("%Y-%m-%d-%H_%M_%S",time.localtime(time.time()))#把当前时间加到报告中filename="E:\\abc\\report\\"+now+'result.html'fp=open(filename,'wb')# runner=HTMLTestRunner.HTMLTestRunner(#     stream=fp,#     title=u'百度有道测试报告',#     description=u'用例执行情况:'# )
#定义发送邮件def sentmail(file_new):    mail_from='*******@126.com'    mail_to='******@126.com' #qq邮箱会屏蔽内容    #subject = '检查报告反馈'    f=open(file_new,'rb')    mail_body=f.read()    f.close()    msg=MIMEText(mail_body,_subtype='html',_charset='utf-8')    msg['Subject'] =u'检查报告反馈'    msg['date']=time.strftime('%a, %d %b %Y %H:%M%S %z')    msg['From'] = mail_from  #    msg['To'] = mail_to  #    smtp = smtplib.SMTP()    smtp.connect('smtp.126.com')    smtp.login('******@126.com', 'password')    smtp.sendmail(mail_from, mail_to, msg.as_string())    smtp.quit()    print('email has send out!')
#查找测试报告,调用发邮件功能def sendreport():    result_dir = 'E:\\abc\\report'    lists = os.listdir(result_dir)    lists.sort(key=lambda fn: os.path.getmtime(result_dir + '\\' + fn) if not    os.path.isdir(result_dir + '\\' + fn) else 0)    print('最新的文件为:' + lists[-1])
    #找到最新生成的文件    file = os.path.join(result_dir, lists[-1])    print(file)    sentmail(file)if __name__=="__main__":    runner = HTMLTestRunner.HTMLTestRunner(        stream=fp,        title=u'百度有道测试报告',        description=u'用例执行情况:'    )    runner.run(alltestnames)    sendreport()