將生成的測試報告發送郵件
阿新 • • 發佈:2019-01-06
首先從電腦上讀取excel表格,使用HTMLTestRunner模組生成測試報告
# !/usr/bin/env python
# coding:utf-8
import xlrd
import unittest
import requests
import HTMLTestRunner
import time
class Test(unittest.TestCase):
def duqu(self, filename='C:\\Users\\dell\\Desktop\\test.xls'): # 讀取 Excel檔案
data = xlrd.open_workbook(filename) # 開啟檔案把引數傳給 data
table = data.sheets()[0] # 通過索引順序獲取Excel 檔案
parameter = table.row_values(1) # 獲取整行資料 獲取Excel 第二行資料
#jsoninfo = eval(parameter[3])
jsoninfo = parameter[3] # 因為 parameter 變數型別是str 需要用eval函式轉換成dict
url = 'http://www.senbaba.com' + parameter[2] # 基礎地址 加上測試介面測路徑
return url, parameter[1], jsoninfo
def test_text(self):
auth = self.duqu() # 呼叫 duqu 函式
r = requests.request("%s" % auth[1], auth[0], params=auth[2]) # requests庫作為介面核心,傳入url,post請求,json引數
#requests.request(method, url, **kwargs)
self.assertIn(r.text,'"code":"OK"')
#self.assertEqual(r.status_code, 200) # 斷言code 是否等於200
def test_code(self):
auth = self.duqu() # 呼叫 duqu 函式
r = requests.request("%s" % auth[1], auth[0], params=auth[2]) # requests庫作為介面核心,傳入url,post請求,json引數
# requests.request(method, url, **kwargs)
#self.assertIn('"code":"OK"', r.text)
self.assertEqual(r.status_code, 404) # 斷言code 是否等於200
return r.status_code
'''
def suite():
suiteTest = unittest.TestSuite()
suiteTest.addTest(Test("test_text"))
suiteTest.addTest(Test("test_code"))
return suiteTest
'''
if __name__=="__main__":
# unittest.main()如果不生成測試包報告的話,就可以加這句
testunit=unittest.TestSuite()
testunit.addTest(Test("test_text"))#將測試用例加入到測試容器中
testunit.addTest(Test("test_code"))
now = time.strftime("%Y-%m-%d-%H_%M_%S",time.localtime(time.time()))#獲取當前時間,這樣便於下面的使用。
filename="result"+now+".html"
fp = open('D://'+filename, 'wb')
#filepath='D:\\"result"+now+".html"'
runner=HTMLTestRunner.HTMLTestRunner(stream=fp, title='test result', description=u'result:')
runner.run(testunit)
fp.close()
接下來要將該測試報告發送到郵箱