1. 程式人生 > >Python-異常處理try(二)

Python-異常處理try(二)

在Python-異常處理try(一) 中最後我們提到過關於try-except-raise的內容,本篇部落格,補充關於raise的一個知識點,Python-異常處理try(一) 的連結如下:
http://blog.csdn.net/weixin_39568072/article/details/78481563
想說一點是,當我們使用unittest結合HTMLTestRunner來輸出自動化測試報告的額時候,有一點我給忽略了,當時用raise只是看到了它的一個好處,就是如果有異常,它會丟擲異常,並且用例的執行結果會是error。
但是今天我在測試用例中寫了一個迴圈,當迴圈中間某一個迴圈出現異常的時候,後面的迴圈就不會執行了,例如下程式碼的情況:

#encoding=utf-8

import unittest
import traceback
from HTMLTestRunner import HTMLTestRunner

class Raise(unittest.TestCase):
    def setUp(self):
        pass

    def test01(self):
        for i in range(10):
            try:
                self.assertEqual(i,1,'not equal')
            except Exception,e:
                raise
e else: print 'i == 1' def tearDown(self): pass if __name__=='__main__': suite=unittest.TestSuite() suite.addTest(Raise('test01')) with open('HTMLReport.html','w')as fp: runner=HTMLTestRunner(stream=fp,title='raise report',description='ajin report'
,verbosity=2) runner.run(suite)

看,我這裡的except是和raise聯合使用的,我們來看一下報告:
這裡寫圖片描述
我們看到,迴圈只執行了一次就停住了;
那麼,程式碼改一下,我們再看:

#encoding=utf-8

import unittest
import traceback
from HTMLTestRunner import HTMLTestRunner

class Raise(unittest.TestCase):
    def setUp(self):
        pass

    def test01(self):
        for i in range(10):
            try:
                self.assertEqual(i,1,'not equal')
            except Exception,e:
                print traceback.format_exc()
            else:
                print 'i == 1'

    def tearDown(self):
        pass

if __name__=='__main__':
    suite=unittest.TestSuite()
    suite.addTest(Raise('test01'))
    with open('HTMLReport.html','w')as fp:
        runner=HTMLTestRunner(stream=fp,title='raise report',description='ajin report',verbosity=2)
        runner.run(suite)

改動的地方就是把except中的raise變成了traceback.format_exc(),這樣我們看一下報告:
這裡寫圖片描述
下面還有其他的,就不截圖了;

所以,我們可以看到,raise丟擲異常後,後面的程式碼就強行停止了,所以,要是testCase中有迴圈的話,為了不使異常中斷迴圈,我們要用except-traceback.format_exc(),這樣既可以打印出來報錯資訊,也可以不中斷迴圈!!!!
就是有一點要操心,計時testCase的try中捕獲了異常,但是報告中的結果會顯示pass,而不是error,所以看報告的時候要開啟報告看一下詳細資訊,不要被執行結果欺騙!!

這裡寫圖片描述

相關推薦

Python-異常處理try

在Python-異常處理try(一) 中最後我們提到過關於try-except-raise的內容,本篇部落格,補充關於raise的一個知識點,Python-異常處理try(一) 的連結如下: http://blog.csdn.net/weixin_395680

Python-異常處理try

平時在做自動化測試的時候,腳本里面會經常用到try和except,但是感覺好像對try的用法理解的不是很透徹,今天在這裡重新學習下,也分享給大家! 大家看一下 try 和 except 的工作原理: try: #可能發生異常的

Python資料處理Numpy屬性

簡單介紹一下numpy中常見的三個屬性: ndim:    維度 shape:  行數和列數 size:     元素個數 使用numpy首先要匯入模組,為了方便

Python數據分析pandas缺失值處理

taf spa 3.0 .data float 數據分析 pandas panda pri import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(5, 3), index

Java程式設計思想第四版第十章學習——通過異常處理錯誤1

使用異常帶來的好處: 它降低了錯誤處理程式碼的複雜度。使用異常後,不需要檢查特定的錯誤並在程式中的許多地方去處理它。因為異常機制將保證能夠捕獲這個錯誤且只需在一個地方處理錯誤,即異常處理程式中。 1、基本異常 異常情形:阻止當前方法或作用域繼續執行的問

Python+NLTK自然語言處理學習:常用方法similar、common_contexts、generate

一、similar 用來識別文章中和搜尋詞相似的詞語,可以用在搜尋引擎中的相關度識別功能中。 text1.similar("monstrous") 查詢出了text1中與monstrous相關的所有詞語: 二、common_contexts 用來識別2個

Python 接口測試

expect type version not found 指定 刷新 created 進行 拷貝 三:http狀態碼含義(來源於w3school): 狀態碼: 1xx: 信息 消息: 描述: 100 Continue 服務器僅接收到部分請求,但是一旦

Python入門系列教程

字符 小寫 無符號 bsp div width raw_input abc body 字符串 1.字符串輸出 name = ‘xiaoming‘ print("姓名:%s"%name) 2.字符串輸入 userName = raw_input(‘請輸

Python爬蟲小白---爬蟲基礎--Selenium PhantomJS

decode bject windows beautiful 結構 由於 target header 速度 一、前言    前段時間嘗試爬取了網易雲音樂的歌曲,這次打算爬取QQ音樂的歌曲信息。網易雲音樂歌曲列表是通過iframe展示的,可以借助Selenium獲

Python開發簡單爬蟲---爬取百度百科頁面數據

class 實例 實例代碼 編碼 mat 分享 aik logs title 一、開發爬蟲的步驟 1.確定目標抓取策略: 打開目標頁面,通過右鍵審查元素確定網頁的url格式、數據格式、和網頁編碼形式。 ①先看url的格式, F12觀察一下鏈接的形式;② 再看目標文本信息的

Python web框架 Tornado異步非阻塞

.py thread bind log class multiple fin ini lex 異步非阻塞 阻塞式:(適用於所有框架,Django,Flask,Tornado,Bottle)   一個請求到來未處理完成,後續一直等待   解決方案:多線程,多進程 異步

Python爬蟲實例使用selenium抓取鬥魚直播平臺數據

def 獲取 平臺 es2017 抓取 設置 log ips driver 程序說明:抓取鬥魚直播平臺的直播房間號及其觀眾人數,最後統計出某一時刻的總直播人數和總觀眾人數。 過程分析: 一、進入鬥魚首頁http://www.douyu.com/directory/all 進

數字圖像處理筆記關鍵鏡頭檢測

通過 diff 鏡頭 type min www jpg 類型 vid 鏡頭邊界檢測技術簡述 介紹 作為視頻最基本的單元幀(Frame),它的本質其實就是圖片,一系列幀通過某種順序組成在一起就構成了視頻。鏡頭邊界是視頻相鄰兩幀出現了某種意義的變化,即鏡頭邊界反映了視頻內容的不

python學習之路 -- 函數、JSON、終端樣式

blog ade def 數量 通過 等於 name tuple args 函數 函數構成 定義函數:使用def即可 def __getName(idCard): return user_info[idCard].Name 其中,__get

python面向對象之封裝

面向 ret 引用 obj cap lock 推薦 簡單 rom 封裝定義:    在程序設計中,封裝(Encapsulation)是對具體對象的一種抽象,即將某些部分隱藏起來,在程序外部看不到,其含義是其他程序無法調用。   即“封裝”就是將抽象得到的數據和行為(或功能)

Python-面向對象-Day7

tor 情況 所有 load 位置 page 面向 environ ams 1、字段 12、方法 43、屬性 63.1、屬性的基本使用 73.2、實例:對於主機列表 83.3、屬性的兩種定義方式 94、對於類的成員而言都有兩種形式: 144.1、私有成員和公有成員的訪問限

Python 之 基礎知識

break post elif true 滿足 賦值 隨機數 計數 spa 一、分支運算   在Python 2.x中判斷不等於還可以用<> if語句進階:elif if 條件1:   ...... elif 條件2:   ...... else:

Python 學習之路

在外 封裝 過程 數列 == 3.6 開頭 res form Python 學習之路(二) 以下所用的是Python 3.6 一、條件語句 簡單判斷 1 if 判斷條件: 2 執行語句…… 3 else: 4 執行語句…… 復雜判斷 1 if 判斷

Python學習記錄——Ubuntu用戶和用戶組

root用戶 -s spa 登陸 gpo 用戶名 執行權 添加 ubun 1.etc文件作用: (1) /etc/passwd 用戶賬戶信息。 (2)/etc/shadow 安全用戶賬戶信息。 (3)/etc/group 組賬戶信息。 (4)/etc/gshadow 安全組

Python第一周習題集

浮點數 由於 開發 出了 total Go 變量 比較大小 九九 #比較大小 #方法1 from math import max a = (‘請輸入第一個整數:‘) b = (‘請輸入第二個整數:‘) c = (‘請輸入第三個整數:‘) d = max(a, b, c)