1. 程式人生 > 實用技巧 >python+requests+unittest 搭建介面自動化測試框架(二)

python+requests+unittest 搭建介面自動化測試框架(二)

入口檔案 runAll.py

import os
import sys
sys.path.append(os.getcwd())
import HTMLTestRunner
import unittest
import readConfig
from common.configEmail import SendEmail
 
send_mail = SendEmail(
        username='[email protected]',
        passwd='gsveeerazxbbaldbgbj',
        recv=['rrrrrrr@163.com'],
        title
='介面自動化測試', content='測試傳送郵件', file='d:/test_interface/report/report.html', ssl=True ) on_off = readConfig.ReadConfig().get_email('on_off') # log = common.Log.logger class AllTest(object):#定義一個類AllTest def __init__(self):#初始化一些引數和資料 self.resultPath = os.path.join(os.getcwd()+'
/report/'+'report.html')#result/report.html self.caseListFile = os.path.join(os.getcwd()+'/caselist.txt')#配置執行哪些測試檔案的配置檔案路徑 self.caseFile = os.path.join(os.getcwd()+'/testCase')#真正的用例存放路徑 self.caseList = [] def set_case_list(self): """ 讀取caselist.txt檔案中的用例名稱,並新增到caselist元素組 :
return: """ fb = open(self.caseListFile) for value in fb.readlines(): if value != '' and '#' not in value:# 如果data非空且不以#開頭 self.caseList.append(value.replace("\n", ""))#讀取每行資料會將換行轉換為\n,去掉每行資料中的\n fb.close() def set_case_suite(self): """ :return: """ self.set_case_list()#通過set_case_list()拿到caselist元素組 test_suite = unittest.TestSuite() for case in self.caseList:#從caselist元素組中迴圈取出case case_name = case.split("/")[1]#通過split函式來將aaa/bbb分割字串,1取後面,0取前面 print(case_name+".py")#打印出取出來的名稱 #批量載入用例,第1個引數為用例存放路徑,第2個引數為用例檔名 discover = unittest.defaultTestLoader.discover(self.caseFile, pattern=case_name + '.py', top_level_dir=None) #使用addTest新增到測試集 test_suite.addTest(discover) return test_suite #返回測試集 def run(self): try: suit = self.set_case_suite()#呼叫set_case_suite獲取test_suite print('try') if suit is not None:#判斷test_suite是否為空 fp = open(self.resultPath, 'wb')#開啟result/20181108/report.html測試報告檔案,如果不存在就建立 #呼叫HTMLTestRunner runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title='Test Report', description='Test Description') runner.run(suit) else: print("Have no case to test.") except Exception as ex: print(str(ex)) #log.info(str(ex)) finally: print("*********TEST END*********") #log.info("*********TEST END*********") fp.close() #判斷郵件傳送的開關 if on_off != 'on': send_mail.send_email() else: print("郵件傳送開關配置關閉,請開啟開關後可正常自動傳送測試報告") if __name__ == '__main__': AllTest().run()