Python自動化測試 Python基礎 異常處理

2021-10-23 18:50:46 字數 3994 閱讀 7333

目錄定義

異常型別

異常捕獲方法

1)try…except…

2)try…except…finally…

3)try…except…else…

觸發異常

1.定義

程式如果遇到異常後不會再執行後面的語句,但不能讓程式遇到異常就終止執行。

改變程式碰到異常就終止的行為叫異常處理,異常的捕獲,處理異常儲存到資料庫、日誌等

2.異常型別

1)indexerror

2)zerodivisionerror

3)valueerror

3.異常捕獲方法

1)try…except…

try

:#要執行的可能發生異常的**

except

:#程式發生異常以後,希望程式做的事情

a. 不填寫:捕獲所有異常(但無法獲取異常資訊),有任何錯誤就執行 except 子語句2

try

:print

("正在執行程式"

) a =1/

0#除數不能為0,有報錯

print

(f"計算結果:"

)#try中的報錯語句後面的**不會再執行

except

:#不填寫異常型別

print

("我知道 1 不能 / 0 , 你需要改除數"

)#執行except中的語句

print

("剩下的程式"

)#會執行

b.單個異常型別:當且僅當出現這個指定的異常型別時才會執行 except 的子語句2

# 捕獲具體的異常型別

try:

print

("正在執行程式"

) a =1/

0#除數不能為0的異常型別是:zerodivisionerror

print

(f"計算結果:"

)except zerodivisionerror:

#在except後面加上這個異常型別zerodivisionerror

print

("我知道 1 不能 / 0 , 你需要改除數"

)print

("剩下的程式"

)

注意: 如果實際發生的異常型別沒有寫入的話,仍然會出現程式終止的情況,所以要盡可能寫入完善的異常型別

b.補充:展示異常資訊

# 展示異常資訊

try:

print

("正在執行程式"

) a =1/

0print

(f"計算結果:"

)except zerodivisionerror as e:

print

(e)#將異常的具體資訊列印出來:division by zero

print

("剩下的程式"

)

c.多個異常型別:出現所列的任意乙個異常的時候,執行對應 except 的語句

#捕獲多個具體的異常型別

try:

['age'

]#字典key值錯誤:keyerror

lst =

['pz'

,'yj'

] lst[3]

#列表取值超出索引值:indexerror

a =1/

0except

(zerodivisionerror, indexerror, keyerror)

as e:

# try中遇到異常就會停止執行後面的**,直接跳到except,所以只會展示遇到的異常型別的資訊

print

(e)#keyerror的異常資訊:'age'

print

("hello world"

)

try:[

'age'

] lst =

['pz'

,'yj'

] lst[3]

a =1/

0except zerodivisionerror as e:

print

(e)print

("hello world"

)except indexerror:

print

("index error"

)except keyerror:

print

("key error"

)

注意:這兩種方法具體用哪種,就看要不要對異常做統一處理(方法1)

d.某種異常:這種異常下的所有型別錯誤都能**獲,只要出現錯誤,就執行 except 子語句

try:

(縮排)子語句1

except exception as e:

(縮排)print(e)

子語句2

try:1

/0except exception as e:

print

(f"全能警察:"

)

注意:d和a的區別在於,exception既能捕獲該基類下的所有異常又能展示異常資訊;而不填寫異常型別只能捕獲所有異常,不能展示異常資訊

2)try…except…finally…

try

:#要執行的可能發生異常的**

except 異常型別:

#程式發生異常以後,希望程式做的事情

finally

:#報錯與否都會執行的**

import io #有關輸入輸出,要匯入io模組(內建)

try:

f =open

('demo.py'

,'a'

) f.read(

)#mode=a,無法read,報錯io.unsupportedoperation

except io.unsupportedoperation as e:

print

("檔案讀取失敗"

)finally

: f.close(

)#檔案開啟後不論有無報錯,都要關閉檔案

3)try…except…else…

try

:#要執行的可能發生異常的**

except 異常:

#程式發生異常以後,希望程式做的事情

else

:#try語句不報錯才會執行的**

3.觸發異常

注意:異常型別是exception標準型別中的任意乙個型別(例如:nameerror)

#自定義異常型別、異常資訊

defadult_add

(a, b)

:"""兩個數相加,a, b 一定要大於 18, 否則就不能執行"""

if(a <18)

or(b <18)

:raise valueerror(

"引數必須大於18"

) c = a + b

return c

#直接呼叫函式並遇到該異常時,會報出異常

add(3,

6)#用異常捕獲可以成功捕獲

try:

adult_add(3,

4)except

:print

("函式執行完成。"

)

python自動化測試

為了讓單元測試 能夠被測試和維護人員更容易地理解,最好的解決辦法是讓開發人員遵循一定的規範來編寫用於測試的 具體到python程式設計師來講,則是要採用pyunit這一自動測試框架來構造單元測試用例。目前pyunit已經得到了大多數python開發人員的認可,成了事實上的單元測試標準。1.要被測試的...

python自動化測試

0 寫在前面 專案都快搞完了,感覺還是一堆的bug,人工測試還是不靠譜 意識到測試的重要性,學習下自動化測試 1 相關庫 unittest python自帶的自動化測試庫 htmltestrunner 用於生成報告 一些坑 瀏覽器和driver的版本必須一致,否則起不來 必須要通過命令列的方式執行指...

自動化測試 web自動化測試

自動化 由機器裝置代替人為完成制定目標的過程 優點 提高工作效率 減少勞動力 產品規格同一標準 批量生產 自動化測試 讓程式代替人為去驗證程式功能的過程,即在預設條件下執行程式系統 流程確定 搭建自動化框架 編寫測試用例,將其轉化為soupui 介面 自動化測試指令碼 執行自動化測試指令碼 輸出執行...