用python+openpyxl從表格中讀取測試用例的多條數據,然后將執行結果寫入表格中,同時生成測試報告


 
         
 1 # -*- coding: utf-8 -*-
 2 import unittest
 3 from selenium import webdriver
 4 import HTMLTestRunner
 5 from openpyxl import load_workbook
 6 class mylogintest(unittest.TestCase):#定義一個mylogintest類繼承unittest.TestCase類
 7     '''打開百度測試'''
 8     def setUp(self):#用例執行前的初始化工作
 9         print("開始測試")
10         self.driver = webdriver.Firefox()
11 
12     def tearDown(self):#用例執行后的初始化工作
13         print("結束測試")
14         self.driver.quit()
15 
16     def testopenBD(self):
17         '''打開百度'''
18         book = load_workbook("mylogintest.xlsx")  # 默認可讀寫,若有需要可以指定write_only和read_only為True
19         b = book.active
20         datadict = {} #創建一個字典變量
21         maxC = b.max_column#獲取最大列
22         maxR = b.max_row#獲取最大行
23         for i in range(1, maxC + 1):#range默認從0開始,到后面參數的-1結束,而openpyxl都是從第一行第一列開始的,所以參數為1,maxC+1;意思就是遍歷第一列到最后一列,
24             datadict.setdefault(b.cell(1, i).value)#設置字典datadict的鍵值,從第一行第一列,到第一行最后一列,也就是第一行的標題設置為鍵值,i表示列
25             # print(datadict)
26         for i in range(2, maxR + 1):#除去第一行標題,從第二行遍歷到最后一行
27             for j in range(1, maxC + 1):#從第一列遍歷到最后一列
28                 datadict[b.cell(1, j).value] = b.cell(i, j).value#在字典里設置鍵對應的值,j表示列
29                 # print(datadict)
30             # if datadict["url"] & datadict["校驗"] != None:
31             self.driver.get(datadict["地址"])#從對應鍵里取出值地址對應的URL值,這里的鍵就是表格的第一行標題,所以EXCEL的標題要按照規定來寫
32             if self.driver.title == datadict["校驗"]:#如果打開地址后,title值跟校驗對應的值一致
33                 b.cell(i, maxC, '通過')#就將測試通過結果寫入當前行的最后一列的單元格中,
34             else:
35                 b.cell(i, maxC, '不通過')#就將測試不通過結果寫入當前行的最后一列的單元格中,所以建立表格數據的時候,默認將結果寫到最后一列即可
36         book.save("mylogintest.xlsx")#最后記得關閉
37 
38 if __name__=='__main__':
39     filename = './'+'mylogintestresult.html'#定義文件名與路徑
40     fp = open(filename,'wb')#生成文件
41     ut = unittest.TestSuite()  # 創建測試套件;TestSuite不加括號的結果:addTest() missing 1 required positional argument: 'test'
42     ut.addTest(mylogintest('testopenBD'))#將要執行的用例加入測試套件中
43     runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title='分別打開百度51網站',description='百度51') #如果引用的是from HTMLTestRunner import HTMLTestRunner,這里就不需要寫兩個HTMLTestRunner,一個就夠了
44     runner.run(ut)#運行測試套件
45     fp.close()

表格內容為:黃色標記為腳本自動寫入的值

測試報告:

其實針對一個用例多條數據的情況,用測試報告沒太大用,而且我暫時也沒有找到一個測試用例,多條測試數據能夠生成一個多條結果的報告,這里只有一條,所以直接用表格寫入寫出的方法也還比較方便,

生成的測試報告可以刪除掉不用

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM