python 產生測試報告並發送郵件

來源:互聯網
上載者:User

標籤:strong   result   www   使用   drive   oid   add   列表   stream   

前言:

  使用unittest編寫自動化測試指令碼,執行指令碼後可以很方便看到測試案例的執行情況。

但如果想向領導彙報工作,就需要提供更直觀的測試報告。

思路:

  使用unittest編寫測試案例,HTMLTestRunner產生測試報告,yagmail發送測試報告

代碼:

測試案例:

from selenium import webdriver
import unittest,time,os
from HTMLTestRunner import HTMLTestRunner

#配置資訊
desired_caps = {}
desired_caps["platformName"] = "Android"
desired_caps["platformVersion"] = "7.0"
desired_caps["deviceName"] = "HuaWeiP9"
desired_caps["appPackage"] = "com.android.calculator2"
desired_caps["appActivity"] = "com.android.calculator2.Calculator"
# 支援輸入中文
desired_caps["unicodeKeyboard"] = "True"
desired_caps["resetKeyboard"] = "True"

class TestCalc(unittest.TestCase):

@classmethod
def setUpClass(cls):

# 啟動appium服務
cls.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)

@classmethod
def tearDownClass(cls):

cls.driver.quit()

def test_add(self):
‘‘‘加法計算‘‘‘

driver = self.driver
driver.find_element_by_id("com.android.calculator2:id/digit_7").click()
driver.find_element_by_id("com.android.calculator2:id/op_add").click()
driver.find_element_by_id("com.android.calculator2:id/digit_3").click()
driver.find_element_by_id("com.android.calculator2:id/eq").click()
res = driver.find_element_by_id("com.android.calculator2:id/formula").text

# 添加斷言
self.assertEqual(res,"10","結果錯誤")

def test_sub(self):
‘‘‘減法計算‘‘‘

driver = self.driver
driver.find_element_by_id("com.android.calculator2:id/digit_7").click()
driver.find_element_by_id("com.android.calculator2:id/op_sub").click()
driver.find_element_by_id("com.android.calculator2:id/digit_3").click()
driver.find_element_by_id("com.android.calculator2:id/eq").click()
res = driver.find_element_by_id("com.android.calculator2:id/formula").text

# 添加斷言
self.assertEqual(res,"4","結果錯誤")

if __name__ == "__main__":
unittest.main()

產生測試報告:
將if __name__ == "__main__": 後的語句做如下修改:
if __name__ == "__main__":

#建立測試套
suite = unittest.TestSuite()
#向測試套添加測試案例
suite.addTest(TestCalc("test_add"))
suite.addTest(TestCalc("test_sub"))

#指定測試報告儲存路徑 及 檔案名稱
now = time.strftime("%Y-%m-%d %H_%M_%S")
filename= "../report/"+now+" result.html"

#使用HTMLTestRunner產生HTML測試報告
with open(filename,"wb") as f:

runner = HTMLTestRunner(
stream=f,
title="測試報告",
description = "用例執行情況"
)
runner.run(suite)

測試報告格式
用例通過:

 用例失敗:

 發送郵件 

#測試報告儲存路徑
report_dir = "../report/"
#將測試報告檔案夾下的所有檔案名稱作為一個列表返回
lists = os.listdir(report_dir)
#對所有測試報告按照產生時間進行排序
lists.sort(key = lambda filename : os.path.getmtime(report_dir+filename))
#擷取最新的測試報告
recent=lists[-1]

#指定最新的測試報告路徑
file=os.path.join(report_dir,recent)

#填寫登入資訊
yag = yagmail.SMTP("[email protected]","password","smtp.126.com")

#郵件內文
content="計算機測試報告"

#將測試報告作為附件發送
yag.send("[email protected]","測試報告",content,file)

 


 

 

 

 補充說明:

1.填寫的郵箱登入密碼為:126郵箱授權碼,不是自己126帳號的登入密碼

2.不理解sort方法請查閱:http://www.cnblogs.com/kaerxifa/p/8543491.html

3.不理解os.path.join()請查閱:http://www.cnblogs.com/kaerxifa/p/8543505.html

 

python 產生測試報告並發送郵件

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.