最近開始學習用python使用selenium寫前端自動化用例,過程中遇到乙個問題。
使用斷言設定檢查點,斷言失敗了,但是用例結果為pass。原來的**結構如下:
其中呼叫了乙個自定義類的函式:is_element_exist_wait,而後用asserttrue設定檢查點。測試時修改了元素定位的字串,使檢查結果失敗。檢視到assert與預期相符。但是使用htmltestrunner檢視到結果為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)
原來是因為我把斷言語句放到了try語句下面,導致被except中定義的異常類捕獲,最後執行完就沒有異常了。
修改後的**就沒有問題了:
看來不能把斷言放到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")
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 在斷言中前面那部分輸入...