python 生成測試報告並發送郵件
阿新 • • 發佈:2018-03-11
find file 格式 報告 自動化 repo self. remote tex
前言:
使用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 生成測試報告並發送郵件