selenium3 & python3 常用斷言及異常處理(完整篇)

今天我們來聊一聊 異常斷言

異常

常見異常類型

序號 異常 描述
1) BaseException 所有異常類的基類(python2.5之後)
2) Exception 所有異常類的基類,繼承BaseException
3) AssertionError assert語句失敗
4) AttirbuteError 試圖訪問未知的對象屬性
5) FileNotFoundError 試圖打開一個不存在的文件或目錄
6) AttributeError 試圖訪問的對象沒有屬性
7) OSError 當系統函數返回一個系統相關的錯誤(包括I/O故障),如“找不到文件”或“磁盤已滿”時,引發此異常
8) NameError 使用一個還沒賦值對象的變量
9) IndexError 當一個序列超出範圍時引發此異常
10) KeyError 試圖訪問你字典裏不存在的鍵
11) IOEError 輸入輸出異常,基本是無法打開文件
12) ImportError 無法引入模塊或者包,基本是路徑問題
13) SyntaxError 當解析器遇到一個語法錯誤時引發此異常
14) KeyboardInterrupt 按下組合鍵Ctrl+C,程序被強行終止
15) TypeError 傳入的對象類型與要求不符
16) VauleError 傳入一個不被期望的值,即使類型正確

異常用法

1.try–except–else

except異常執行,else非異常執行

try:
    print(a)
except NameError as msg:
    print(msg)
else:
    print("沒有異常時執行")

輸出結果爲:name ‘a’ is not defined

2.try–except–finally

except異常執行,finally正常異常都執行

try:
    print(a)
except NameError as msg:
    print(msg)
finally:
    print("不管是否出現異常,都會被執行")

輸出結果爲:
name ‘a’ is not defined
不管是否出現異常,都會被執行

拋出異常

raise關鍵字
>>可用來拋出一個異常信息。
>>只能使用Python提供的異常類。
>>如果想要raise使用自定義異常類,則自定義類需要繼承Exception類

def say_hello(name=None):
   # name爲空,拋出異常
    if name is None:
        raise NameError('"name" cannot be empty')
    else:
        print("hello,  %s" % name)

if __name__ == '__main__':
    say_hello()

運行結果,如下:
在這裏插入圖片描述

斷言

斷言的三種模式

selenium提供了三種模式斷言:
assert
>>Assert(斷言) 失敗時,該測試將終止。
verify
>>Verify(驗證) 失敗時,該測試將繼續執行,並將錯誤記入日誌顯示屏 。
waitfor
>>Waitfor(等待) 用於等待某些條件變爲真,若爲真,則立即執行,若爲假,則失敗且暫停。一般跟SetTimeout時間一起用。

常用的斷言方法

序號 斷言 描述
1) assertLocation 判斷當前是在正確的頁面
2) assertTitle 檢查當前頁面的 title 是否正確
3) assertValue 檢查 input 的值, checkbox 或 radio,有值爲”on”無爲”off”
4) assertSelected 檢查 select 的下拉菜單中選中是否正確
5) assertSelectedOptions 檢查下拉菜單中的選項的是否正確
6) assertText 檢查指定元素的文本
7) assertTextPresent 檢查在當前給用戶顯示的頁面上是否有出現指定的文本
8) assertTextNotPresent 使檢查在當前給用戶顯示的頁面上是否沒有出現指定的文本
9) assertAttribute 檢查當前指定元素的屬性的值
10) assertTable 檢查 table 裏的某個 cell 中的值
11) assertEditable 檢查指定的 input 是否可以編輯
12) assertNotEditable 檢查指定的 input 是否不可以編輯
13) assertAlert 檢查是否有產生帶指定 message 的 alert 對話框
14) verifyTitle 檢查預期的頁面標題
15) verifyTextPresent 驗證預期的文本是否在頁面上的某個位置
16) verifyElementPresent 驗證預期的UI元素,它的HTML標籤的定義,是否在當前網頁上
17) verifyText 覈實預期的文本和相應的HTML標籤是否都存在於頁面上
18) verifyTable 驗證表的預期內容
19) waitForPageToLoad 暫停執行,直到預期的新的頁面加載
20) waitForElementPresent 等待檢驗某元素的存在。爲真時,則執行

unittest 常用的斷言方法

序號 unittest常用斷言 描述
1) assertEqual(self, first, second, msg=None) 判斷兩個參數相等:first == second
2) assertNotEqual(self, first, second, msg=None) 判斷兩個參數不相等:first != second
3) assertIn(self, member, container, msg=None) 判斷是字符串是否包含:member in container
4) assertNotIn(self, member, container, msg=None) 判斷是字符串是否不包含:member not in container
5) assertTrue(self, expr, msg=None) 判斷是否爲真:expr is True
6) assertFalse(self, expr, msg=None) 判斷是否爲假:expr is False
7) assertIsNone(self, obj, msg=None) 判斷是否爲 None:obj is None
8) assertIsNotNone(self, obj, msg=None) 判斷是否不爲 None:obj is not None

以上這幾條,是常用的,但是unittest提供的斷言遠不止這些,更多斷言方法,請參照: unittest官網

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章