亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

最完整的自動(dòng)化測(cè)試流程:Python編寫(xiě)執(zhí)行測(cè)試用例及定時(shí)自動(dòng)發(fā)送最新測(cè)試報(bào)告

系統(tǒng) 1829 0

出處:https://www.cnblogs.com/yufeihlf/p/5752146.html

今天筆者就要?dú)w納總結(jié)下一整套測(cè)試流程,從無(wú)到有,實(shí)現(xiàn)零突破,包括如何編寫(xiě)測(cè)試用例,定時(shí)執(zhí)行測(cè)試用例,查找最新生成的測(cè)試報(bào)告文件,自動(dòng)發(fā)送最新測(cè)試報(bào)告郵件,一整套完整的測(cè)試流程。以后各位只要著重如何編寫(xiě)測(cè)試用例即可,其他模板可以套用的,希望幫助到大家。

目錄

一、編寫(xiě)測(cè)試用例

二、執(zhí)行測(cè)試用例,查找最新測(cè)試用例,自動(dòng)發(fā)送測(cè)試報(bào)告

三、定時(shí)執(zhí)行測(cè)試用例

? ?3.1方案一:Windows任務(wù)計(jì)劃

? ?3.2方案二:Jenkins持續(xù)集成

四、成果驗(yàn)收

?

環(huán)境準(zhǔn)備:

操作系統(tǒng):Windows7

集成開(kāi)發(fā)環(huán)境:eclipse+pydev

?

一、編寫(xiě)測(cè)試用例

點(diǎn)擊返回目錄

? ? 可以直接使用Python自帶的單元測(cè)試框架unittest來(lái)編寫(xiě)自動(dòng)化測(cè)試用例,利用其組織測(cè)試用例,斷言預(yù)期結(jié)果,以及批量執(zhí)行測(cè)試用例等功能,可以很好的進(jìn)行Web自動(dòng)化測(cè)試的開(kāi)發(fā)。

? ? 可以直接查看我另外一篇博文總結(jié):unittest單元測(cè)試框架總結(jié)

? ? 里邊詳細(xì)總結(jié)了使用unittest框架編寫(xiě)測(cè)試用例思路(模板) 使用unittest框架編寫(xiě)測(cè)試用例實(shí)例

? ? 目錄結(jié)構(gòu)如下組織:

最完整的自動(dòng)化測(cè)試流程:Python編寫(xiě)執(zhí)行測(cè)試用例及定時(shí)自動(dòng)發(fā)送最新測(cè)試報(bào)告郵件_第1張圖片

? ? 如上圖:test_case目錄下有兩個(gè)測(cè)試用例,其中test_baidu.py實(shí)例代碼在博文“unittest單元測(cè)試框架總結(jié)”中有貼出。其他實(shí)例,可以參考模板實(shí)現(xiàn),就不全部貼出代碼了。

? ? 而這次需要測(cè)試的就是test_baidu.py和test_youdao.py這兩個(gè)測(cè)試用例。

?

二、執(zhí)行測(cè)試用例,查找最新測(cè)試用例,自動(dòng)發(fā)送測(cè)試報(bào)告

點(diǎn)擊返回目錄

? ? 整個(gè)代碼執(zhí)行過(guò)程可以分成三個(gè)步驟:

? ? 1.通過(guò)unittest框架的discover()找到匹配的測(cè)試用例(以test_開(kāi)頭的腳本),由HTMLTestRunner的run()方法執(zhí)行測(cè)試用例并生成最新測(cè)試報(bào)告。HTMLTestRunner是Python標(biāo)準(zhǔn)卡unittest單元測(cè)試框架的一個(gè)擴(kuò)展,主要用于生成HTML測(cè)試報(bào)告,以便生成一份通俗易懂的測(cè)試報(bào)告來(lái)展示自動(dòng)化測(cè)試成果。

HTMLTestRunner模塊下載地址:http://tungwaiyip.info/software/HTMLTestRunner.html

將下載的文件保存在C:\Python27\Lib目錄下即可。

? ? 2.先定義new_file()函數(shù)(找到某目錄最新文件),調(diào)用new_file()函數(shù)找到測(cè)試報(bào)告目錄下最新生成的測(cè)試報(bào)告,返回最新測(cè)試報(bào)告的路徑。

? ? 3.先定義send_email()函數(shù)(發(fā)送指定路徑下某文件的郵件),將得到的最新測(cè)試報(bào)告的完整路徑傳給send_email()函數(shù),實(shí)現(xiàn)發(fā)郵件功能。

? ? 關(guān)于發(fā)郵件功能,也可以參考我另外一篇博文:Python自動(dòng)發(fā)郵件總結(jié)及實(shí)例說(shuō)明

?

? ? 代碼如下: 注釋中包括實(shí)現(xiàn)的過(guò)程說(shuō)明以及一些在測(cè)試過(guò)程中遇到的問(wèn)題。

? ? 文件命名為runtest_htmltestrunner_autosendemail.py

復(fù)制代碼

            # coding=utf-8
'''
Created on 2016-7-26
@author: Jennifer
Project:整合自動(dòng)發(fā)郵件功能,執(zhí)行測(cè)試用例生成最新測(cè)試報(bào)告,取最新的測(cè)試報(bào)告,發(fā)送最新測(cè)試報(bào)告
問(wèn)題,郵件始終不能顯示html:將電腦時(shí)間改為北京時(shí)間即可
'''
import unittest
from HTMLTestRunner import HTMLTestRunner
import time
import os
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header

#2.定義:取最新測(cè)試報(bào)告
def new_file(test_dir):
    #列舉test_dir目錄下的所有文件,結(jié)果以列表形式返回。
    lists=os.listdir(test_dir)
    #sort按key的關(guān)鍵字進(jìn)行排序,lambda的入?yún)n為lists列表的元素,獲取文件的最后修改時(shí)間
    #最后對(duì)lists元素,按文件修改時(shí)間大小從小到大排序。
    lists.sort(key=lambda fn:os.path.getmtime(test_dir+'\\'+fn))
    #獲取最新文件的絕對(duì)路徑
    file_path=os.path.join(test_dir,lists[-1])
#    L=file_path.split('\\')
#    file_path='\\\\'.join(L)
    return file_path

#3.定義:發(fā)送郵件,發(fā)送最新測(cè)試報(bào)告html
def send_email(newfile):
    #打開(kāi)文件
    f=open(newfile,'rb')
    #讀取文件內(nèi)容
    mail_body=f.read()
#調(diào)試使用
#    print u'打印'
#    print mail_body
    #關(guān)閉文件
    f.close()
    
    #發(fā)送郵箱服務(wù)器
    smtpserver = 'smtp.163.com'
    #發(fā)送郵箱用戶(hù)名/密碼
    user = 'XXX@163.com'
    password='XXX'
    #發(fā)送郵箱
    sender='XXX@163.com'
    #多個(gè)接收郵箱,單個(gè)收件人的話(huà),直接是receiver='XXX@126.com'
    receiver=['XXX@126.com','XXX@126.com','XXX@doov.com.cn']
    #發(fā)送郵件主題
    subject = '自動(dòng)定時(shí)發(fā)送測(cè)試報(bào)告20160808'
    
    #編寫(xiě) HTML類(lèi)型的郵件正文
#MIMEText這個(gè)效果和下方用MIMEMultipart效果是一致的,已通過(guò)。
#    msg = MIMEText(mail_body,'html','utf-8')
    
    msg=MIMEMultipart('mixed')
    
    #注意:由于msg_html在msg_plain后面,所以msg_html以附件的形式出現(xiàn)
#    text = "Dear all!\nThe attachment is new testreport.\nPlease check it."  
    #中文測(cè)試ok
#    text = "Dear all!\n附件是最新的測(cè)試報(bào)告。\n麻煩下載下來(lái)看,用火狐瀏覽器打開(kāi)查看。\n請(qǐng)知悉,謝謝。"   
#    msg_plain = MIMEText(text,'plain', 'utf-8')    
#    msg.attach(msg_plain)
    
    msg_html1 = MIMEText(mail_body,'html','utf-8')
    msg.attach(msg_html1)
    
    msg_html = MIMEText(mail_body,'html','utf-8')
    msg_html["Content-Disposition"] = 'attachment; filename="TestReport.html"'
    msg.attach(msg_html)
   
    #以附件的方式發(fā)送:但是會(huì)報(bào)554,倍163退信。--此路不通。
#    msg_html = MIMEText(mail_body,'base64','utf-8')
#    msg_html["Content-Type"] = 'application/octet-stream'  
#    msg_html.add_header('Content-Disposition', 'attachment', filename='testreport.html')
#    msg.attach(msg_html)
        
#要加上msg['From']這句話(huà),否則會(huì)報(bào)554的錯(cuò)誤。 
#要在163有限設(shè)置授權(quán)碼(即客戶(hù)端的密碼),否則會(huì)報(bào)535
    msg['From'] = 'XXX@163.com 
            
              '
#    msg['To'] = 'XXX@doov.com.cn'
    #多個(gè)收件人
    msg['To'] = ";".join(receiver)
    msg['Subject']=Header(subject,'utf-8')

    #連接發(fā)送郵件
    smtp=smtplib.SMTP()
    smtp.connect(smtpserver,25)
    smtp.login(user, password)
    smtp.sendmail(sender, receiver, msg.as_string())
    smtp.quit()

if __name__=='__main__':   
    print '=====AutoTest Start======'
    #1.執(zhí)行測(cè)試用例,生成最新的測(cè)試用例
    #指定測(cè)試用例為當(dāng)前文件夾下的test_case目錄
    #如果用/可以不用r
#    test_dir='./test_case'
#Windows的cmd執(zhí)行:python "D:\system files\workspace\selenium\test_project\runtest_htmltestrunner_autosendemail.py"
#不用絕對(duì)路徑會(huì)報(bào):ImportError: Start directory is not importable: './test_case'
    test_dir = 'D:\\system files\\workspace\\selenium\\test_project\\test_case'
    #知道測(cè)試報(bào)告的路徑
    test_report_dir='D:\\pythontest\\testresult'
    
    discover=unittest.defaultTestLoader.discover(test_dir, pattern='test_*.py')
    now=time.strftime('%Y-%m-%d_%H_%M_%S_')
    filename = test_report_dir+'\\'+ now + 'result.html'
    fp=open(filename ,'wb')
#需屏蔽fp中的中文文字說(shuō)明。否則在windows下執(zhí)行會(huì)報(bào):UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 553: ordinal not in range(128)
    runner = HTMLTestRunner(stream=fp,title=u'測(cè)試報(bào)告',description=u'用例執(zhí)行情況:')
    runner.run(discover)
#注意:調(diào)用函數(shù)一定要加括號(hào),一個(gè)括號(hào)害死個(gè)人,哎,查了幾天的問(wèn)題,才發(fā)現(xiàn)導(dǎo)致html文件始終顯示空白,就是因?yàn)閏lose函數(shù)調(diào)用不正確,漏了括號(hào)。
    fp.close() 
    
    #2.取最新測(cè)試報(bào)告
    new_report=new_file(test_report_dir)
#調(diào)試用的
#    print new_report
    
    #3.發(fā)送郵件,發(fā)送最新測(cè)試報(bào)告html
    send_email(new_report)
    print '=====AutoTest Over======'
    
            
          

復(fù)制代碼

? ? 直接在eclipse運(yùn)行,運(yùn)行結(jié)果如下:

? ? ..表示兩個(gè)測(cè)試用例都執(zhí)行通過(guò)。

最完整的自動(dòng)化測(cè)試流程:Python編寫(xiě)執(zhí)行測(cè)試用例及定時(shí)自動(dòng)發(fā)送最新測(cè)試報(bào)告郵件_第2張圖片

?

三、定時(shí)執(zhí)行測(cè)試用例

點(diǎn)擊返回目錄

方案一: 直接使用Windows任務(wù)計(jì)劃執(zhí)行Python測(cè)試腳本。

1.創(chuàng)建runner.bat

? ? 由于runtest_htmltestrunner_autosendemail.py腳本目錄為D:\system files\workspace\selenium\test_project,

? ? 所以在該目錄下創(chuàng)建runner.bat,runner.bat的內(nèi)容如下:

? ? python runtest_htmltestrunner_autosendemail.py

? ? 建議:可以事先在cmd命令行下執(zhí)行runtest_htmltestrunner_autosendemail.py,確保該腳本能夠在Windows下正常運(yùn)行。如不能正常運(yùn)行,請(qǐng)繼續(xù)調(diào)試,找出問(wèn)題,直到能夠正常運(yùn)行。如下:

最完整的自動(dòng)化測(cè)試流程:Python編寫(xiě)執(zhí)行測(cè)試用例及定時(shí)自動(dòng)發(fā)送最新測(cè)試報(bào)告郵件_第3張圖片

2.創(chuàng)建任務(wù)計(jì)劃

2.1右鍵計(jì)算機(jī),點(diǎn)擊管理,點(diǎn)擊任務(wù)計(jì)劃程序,再點(diǎn)擊右方的創(chuàng)建任務(wù)。

2.2常規(guī)中,填寫(xiě)名稱(chēng),如:定時(shí)執(zhí)行Python腳本

? ? 觸發(fā)器中,指定執(zhí)行腳本時(shí)間。

? ? 最重要的是操作設(shè)置:

? ? 程序和腳本填寫(xiě)runner.bat這個(gè)文件的名稱(chēng)

? ? 起始于填寫(xiě)runner.bat所在路徑,D:\system files\workspace\selenium\test_project

? ? 如下:

最完整的自動(dòng)化測(cè)試流程:Python編寫(xiě)執(zhí)行測(cè)試用例及定時(shí)自動(dòng)發(fā)送最新測(cè)試報(bào)告郵件_第4張圖片

3.查看

? ? 在任務(wù)計(jì)劃程序庫(kù)中,就會(huì)出現(xiàn)該任務(wù)。

?

方案二: 使用Jenkins定時(shí)執(zhí)行腳本

? ??Jenkins是基于Java開(kāi)發(fā)的一種持續(xù)集成工具,用于監(jiān)控持續(xù)重復(fù)的工作,所以可用于定時(shí)執(zhí)行python腳本。

環(huán)境準(zhǔn)備: jdk1.7及以上+Jenkins[+tomcat(可選)]

? ? Jenkins的安裝可以通過(guò)tomcat作為容器安裝,由于Jenkins包就自帶了servlet,所以我們只需要下載安裝就可以直接啟動(dòng)。 ?

? ? jenkins下載地址:http://jenkins-ci.org ? 選擇LTS(長(zhǎng)期支持的版本),比較穩(wěn)定,下載war包。

第一種啟動(dòng)方法,切換到j(luò)enkins.war存放的目錄(隨便哪個(gè)目錄),輸入如下命令:

> java -jar jenkins.war ? #這樣的話(huà)默認(rèn)端口是8080

若要指定端口,則:

>java -jar jenkins.war --httpPort=8080

然后在瀏覽器中(推薦用火狐)輸入localhost:8080,localhost可以是本機(jī)的ip,也可以是計(jì)算機(jī)名。就可以打開(kāi)jenkins.

?

我就是用第一種方法安裝Jenkins。

?

第二種方法是用tomcat打開(kāi)

tomcat下載地址:http://tomcat.apache.org/

解壓tomcat到某個(gè)目錄,如D:\tomcat9,進(jìn)入tomcat下的/bin目錄,啟動(dòng)tomcat:即雙擊startup.bat文件

最完整的自動(dòng)化測(cè)試流程:Python編寫(xiě)執(zhí)行測(cè)試用例及定時(shí)自動(dòng)發(fā)送最新測(cè)試報(bào)告郵件_第5張圖片

?

將jenkins.war文件放入tomcat下的webapps目錄下,啟動(dòng)jenkins時(shí),會(huì)自動(dòng)在webapps目錄下建立jenkins目錄,所以在地址欄上需要輸入的地址于上一種方法有點(diǎn)不一樣。

?

項(xiàng)目配置

點(diǎn)擊左方的“新建”。

最完整的自動(dòng)化測(cè)試流程:Python編寫(xiě)執(zhí)行測(cè)試用例及定時(shí)自動(dòng)發(fā)送最新測(cè)試報(bào)告郵件_第6張圖片

下方為配置說(shuō)明:

最完整的自動(dòng)化測(cè)試流程:Python編寫(xiě)執(zhí)行測(cè)試用例及定時(shí)自動(dòng)發(fā)送最新測(cè)試報(bào)告郵件_第7張圖片

?

最完整的自動(dòng)化測(cè)試流程:Python編寫(xiě)執(zhí)行測(cè)試用例及定時(shí)自動(dòng)發(fā)送最新測(cè)試報(bào)告郵件_第8張圖片

說(shuō)明:日程表依次是 分鐘 小時(shí) 日 月 星期

*:表示每,每分鐘,每小時(shí),每天,每月,每星期等

, :表示指定列表范圍。

- :表示區(qū)間范圍?

所以0 1 * * ?1-5 表示 每個(gè)月的星期一到星期五,凌晨一點(diǎn)定時(shí)執(zhí)行腳本。

最完整的自動(dòng)化測(cè)試流程:Python編寫(xiě)執(zhí)行測(cè)試用例及定時(shí)自動(dòng)發(fā)送最新測(cè)試報(bào)告郵件_第9張圖片

說(shuō)明:執(zhí)行腳本的命令。

上面配置完成后點(diǎn)擊保存即可。

?

立即構(gòu)建

可先手動(dòng)構(gòu)建項(xiàng)目,查看項(xiàng)目是否能夠執(zhí)行通過(guò)。

點(diǎn)擊左方的“立即構(gòu)建”

最完整的自動(dòng)化測(cè)試流程:Python編寫(xiě)執(zhí)行測(cè)試用例及定時(shí)自動(dòng)發(fā)送最新測(cè)試報(bào)告郵件_第10張圖片

?構(gòu)建完成后,Build History就會(huì)有一條記錄。

? 最完整的自動(dòng)化測(cè)試流程:Python編寫(xiě)執(zhí)行測(cè)試用例及定時(shí)自動(dòng)發(fā)送最新測(cè)試報(bào)告郵件_第11張圖片

點(diǎn)擊這條歷史記錄進(jìn)去

最完整的自動(dòng)化測(cè)試流程:Python編寫(xiě)執(zhí)行測(cè)試用例及定時(shí)自動(dòng)發(fā)送最新測(cè)試報(bào)告郵件_第12張圖片

再點(diǎn)擊Console Output,可查看到日志,F(xiàn)inished: SUCCESS,說(shuō)明已成功。

最完整的自動(dòng)化測(cè)試流程:Python編寫(xiě)執(zhí)行測(cè)試用例及定時(shí)自動(dòng)發(fā)送最新測(cè)試報(bào)告郵件_第13張圖片

?

?

四、成果驗(yàn)收

點(diǎn)擊返回目錄

? ? 然后只需要靜靜的等待,測(cè)試報(bào)告郵件的到來(lái)。

最完整的自動(dòng)化測(cè)試流程:Python編寫(xiě)執(zhí)行測(cè)試用例及定時(shí)自動(dòng)發(fā)送最新測(cè)試報(bào)告郵件_第14張圖片

?


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 色狠狠xx| 久久天天躁狠狠躁夜夜爽 | 狠狠操狠狠操狠狠操 | 国产这里有精品 | 免费在线中文字幕 | 高清国产美女在线观看 | 国产精品女仆装在线播放 | 欧美性性性性性色大片 | 国产农村妇女毛片精品久久 | 国产亚洲精品久久久久久久软件 | 欧美一级视频在线观看 | 日本在线中文 | 91在线网| 久久国产三级精品 | 久久综合九色综合欧美狠狠 | 99这里只有精品在线 | 国产精品视频ccav | 国产成人一区二区三区在线播放 | 日韩毛片免费观看 | 四虎精品永久免费 | 色老头一区二区三区 | 末成年娇小性色xxxxx视频 | 亚洲国产婷婷香蕉久久久久久 | 成年女人视频免费观看一 | 99re5在线精品视频热线 | 热久久精品 | 日韩精品中文字幕在线观看 | s级毛片| 免费深夜视频 | 欧美黑人猛xxxxbbbb | 亚洲一区二区三区精品国产 | 欧美一级毛片片免费孕妇 | 亚洲视频久久 | 亚洲精品久久99久久一 | 久久精品中文字幕一区 | 毛片91 | 一级毛片aaa片免费观看 | a黄毛片| 久久亚洲伊人中字综合精品 | 伦理亚洲| 亚洲精品国产精品精 |