selenium中斷言失敗的用例測試結果為PASS

2021-08-25 17:13:05 字數 1816 閱讀 2559

最近開始學習用python使用selenium寫前端自動化用例,過程中遇到乙個問題。

使用斷言設定檢查點,斷言失敗了,但是用例結果為pass。原來的**結構如下:

def test_create_role(self):

self.driver.get(url)

try:

# 建立角色

self.driver.find_element_by_xpath('//input[@name="rolename"]').send_keys(self.role_name)

self.driver.find_element_by_xpath('//textarea[@name="description"]').send_keys("selenium auto create.")

self.wait.until(

ec.visibility_of_element_located(

(by.xpath, '//button[text()="建立角色"]'))

).click()

is_element_exist = is_element_exist(self.driver, by.xpath,

'//span[contains(text(), "已建立")]').is_element_exist_wait()

logger.info("create role status is %s" % is_element_exist)

self.asserttrue(is_element_exist == true, "create role failed")

except exception as e:

logger.error(e)

其中呼叫了乙個自定義類的函式:is_element_exist_wait,而後用asserttrue設定檢查點。測試時修改了元素定位的字串,使檢查結果失敗。檢視到assert與預期相符。但是使用htmltestrunner檢視到結果為pass.

原來是因為我把斷言語句放到了try語句下面,導致被except中定義的異常類捕獲,最後執行完就沒有異常了。

修改後的**就沒有問題了:

def test_create_role(self):

self.driver.get(url)

self.driver.find_element_by_xpath('//input[@name="rolename"]').send_keys(self.role_name)

self.driver.find_element_by_xpath('//textarea[@name="description"]').send_keys("selenium auto create.")

self.wait.until(

ec.visibility_of_element_located(

(by.xpath, '//button[text()="建立角色"]'))

).click()

is_element_exist = is_element_exist(self.driver, by.xpath,

'//span[contains(text(), "已建立")]').is_element_exist_wait()

logger.info("create role status is %s" % is_element_exist)

self.asserttrue(is_element_exist == true, "create role failed")

看來不能把斷言放到try語句中並且是可以被except的異常類包含的,否則就不能通過斷言來設定測試用例的結果。

selenium斷言的分類

操作 action 輔助 accessors 和斷言 assertion 操作action 模擬使用者與 web 應用程式的互動。輔助accessors 這是輔助工具。用於檢查應用程式的狀態並將結果儲存到變數中。斷言assertion 斷言被用於三種模式 assert verify waitfor ...

unittest中斷言的使用

斷言使用 unittest中提供斷言assert各種方法 所以使用前需要匯入import unittest 常用的有 assertequal first,second,msg assertless first.second,msg first注意 當斷言為真時,會執行斷言之後的 如 在斷言之後列印成...

關於在ios 中斷言的使用

好久沒有寫部落格了,這段時間一直在忙公司的專案 簡單說一下ios中斷言的使用 斷言 在開發中經常在使用到,先看ios中斷言的使用例項 nsassert nsstring str abcd nsassert str isequaltostring abcde str abcde 在斷言中前面那部分輸入...