jenkins構建中的除零錯誤
阿新 • • 發佈:2018-07-23
ace 局限 con get 它的 unittest discover 接口 為我 test*開頭的測試用例
一. 除零錯誤(ZeroDivisionError)
今天在jenkins上運行接口自動化測試任務時,從控制臺輸出中看到了除零錯誤,大概是這樣的
從上圖中,通過分析,可以得出三個結論:
1. jenkins通過命令行執行任務時,其所在的位置是在jenkins中當前任務的工作空間下
2. 那麽main.py中尋找測試用例時的os.getcwd(),得到的不是futureloan_API_framework目錄,而是當前運行腳本的目錄API_Auto_Test
3. 很有可能是因為找不到測試用例才發生除零錯誤,因為我們的代碼用的是TestLoader類下的discover方法,它會匹配以
來看代碼,也印證了上述猜想
import unittest import os import time from HTMLTestRunnerNew import HTMLTestRunner from revise.futureloan_API_framework.Common.conf_dir import htmlreport_dir, testcases_dir #實例化測試套件對象 suite = unittest.TestSuite() #實例化TestLoader對象 loader = unittest.TestLoader()#使用discover尋找當前目錄下的所有測試用例,使用addTests將其放在測試套件下 suite.addTests(loader.discover(os.getcwd())) #獲取當前時間 now = time.strftime("%Y-%m-%d_%H-%M-%S") #在當前目錄下創建一個html文件 fs = open(htmlreport_dir + "/API Test Result_{0}.html".format(now), "wb") #運行測試用例,生成測試報告 runner = HTMLTestRunner(stream=fs, title="API Test Report", tester="xiaozhai") runner.run(suite)
二. 解決辦法:
方法一: 采用配置目錄路徑的方法
在當前工程目錄的Common目錄下新建一個conf_dir.py的文件,利用os.path.abs(__file__)獲得當前的目錄路徑,以及配置其他目錄路徑
import os cur_dir = os.path.split(os.path.abspath(__file__))[0] htmlreport_dir = cur_dir.replace("Common", "HtmlTestReport") logs_dir = cur_dir.replace("Common", "Logs") testcases_dir = cur_dir.replace("Common", "TestCases") testdatas_dir = cur_dir.replace("Common", "TestDatas")
在main.py文件中引入conf_dir.py下的一些表示路徑的變量
import unittest import os import time from HTMLTestRunnerNew import HTMLTestRunner from revise.futureloan_API_framework.Common.conf_dir import htmlreport_dir, testcases_dir #實例化測試套件對象 suite = unittest.TestSuite() #實例化TestLoader對象 loader = unittest.TestLoader() #使用discover尋找當前目錄下的所有測試用例,使用addTests將其放在測試套件下 suite.addTests(loader.discover(testcases_dir)) #獲取當前時間 now = time.strftime("%Y-%m-%d_%H-%M-%S") #在當前目錄下創建一個html文件 fs = open(htmlreport_dir + "/API Test Result_{0}.html".format(now), "wb") #運行測試用例,生成測試報告 runner = HTMLTestRunner(stream=fs, title="API Test Report", tester="xiaozhai") runner.run(suite)
現在去jenkins立即構建,運行成功
方法二:在當前任務的配置中,找到構建,將構建命令修改如下
d:
cd D:\python_workshop\python6\revise\futureloan_API_framework
python main.py
這樣不用改代碼了,因為os.getcwd()表示的正是當前運行腳本所在的位置futureloan_API_framework目錄,運行結果也是成功的
個人比較傾向於第一種方法,無論windows cmd命令怎麽變,它的結果都是成功的,而第二種則必須在特定的目錄下運行腳本,有一定的局限性
jenkins構建中的除零錯誤