給我一個用斷言結果執行下一步的例子

在使用 pytestSelenium 進行自動化測試時,通常我們會根據斷言的結果來決定測試流程的走向。如果斷言失敗,測試通常會停止執行后續的步驟,因為失敗意味著被測系統沒有按照預期工作。然而,有時候我們可能需要在斷言失敗后執行特定的操作,比如記錄錯誤信息或截圖以便調試。

下面是一個示例,展示了如何在斷言失敗后繼續執行下一步操作:

import pytest
from selenium import webdriver
from selenium.webdriver.common.by import Byclass TestWebPage:def setup_method(self):self.driver = webdriver.Chrome()def teardown_method(self):self.driver.quit()def test_button_click(self):self.driver.get('http://example.com')try:# 嘗試查找并點擊按鈕button = self.driver.find_element(By.ID, 'myButton')button.click()# 檢查頁面上的某個元素是否出現success_message = self.driver.find_element(By.CLASS_NAME, 'success-message').textassert 'Success' in success_message, "Success message not found"except AssertionError as e:# 斷言失敗時的操作print("Assertion failed:", str(e))# 可以在這里添加更多操作,如截圖、記錄日志等self.driver.save_screenshot('failed_assertion.png')finally:# 無論斷言是否失敗都會執行的操作print("Test execution completed.")if __name__ == "__main__":pytest.main(['-v', 'test_example.py'])

在這個例子中,我們使用了 try-except-finally 結構來處理斷言失敗的情況。在 try 塊中,我們執行了點擊按鈕和斷言檢查的代碼。如果斷言失敗(即 assert 語句引發了一個 AssertionError),except 塊會被執行,我們在這里打印了錯誤信息,并保存了一個截圖。finally 塊中的代碼無論斷言是否失敗都會被執行,這里我們簡單地打印了一條消息表明測試執行完成。

請注意,雖然在斷言失敗后繼續執行代碼是有用的,但在實際的測試腳本中,我們應該確保這種“失敗后的操作”不會影響測試的正確性和完整性。通常,這些操作應該是輔助性的,比如記錄信息,而不是改變應用程序的狀態或測試的結果。

…………………………

當然,讓我們來看一個更具體的例子,展示如何在斷言失敗后執行下一步操作。在這個例子中,我們將使用 pytestSelenium 來編寫一個測試腳本,該腳本會測試一個表單提交功能。如果表單提交成功,我們期望看到一個確認消息。如果提交失敗,我們將在頁面上查找錯誤消息,并根據情況執行不同的操作。

首先,確保你已經安裝了必要的庫:

pip install pytest selenium

然后,創建一個名為 test_form_submission.py 的文件,內容如下:

import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ECclass TestFormSubmission:def setup_method(self):self.driver = webdriver.Chrome()def teardown_method(self):self.driver.quit()def test_submit_form(self):self.driver.get('http://example.com/form')# 填寫表單input_field = self.driver.find_element(By.NAME, 'inputField')input_field.send_keys('Test Input')# 提交表單submit_button = self.driver.find_element(By.NAME, 'submitButton')submit_button.click()# 等待確認或錯誤消息出現wait = WebDriverWait(self.driver, 10)try:confirmation_message = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.confirmation-message')))assert 'Success' in confirmation_message.text, "Form submission was not successful"print("Form submitted successfully.")except AssertionError:# 斷言失敗,查找錯誤消息error_message = self.driver.find_element(By.CSS_SELECTOR, '.error-message')print("Form submission failed with error:", error_message.text)# 執行下一步操作,例如截圖或記錄日志self.driver.save_screenshot('form_submission_error.png')# 發送郵件通知錯誤(偽代碼)self.send_email_notification(error_message.text)except Exception as e:print("An unexpected error occurred:", str(e))def send_email_notification(self, error_message):# 這里可以實現發送郵件的功能passif __name__ == "__main__":pytest.main(['-v', 'test_form_submission.py'])

在這個例子中,我們首先填寫了一個表單并提交。然后,我們使用 WebDriverWait 等待確認消息的出現。如果確認消息中包含預期的文本 'Success',我們就認為表單提交成功。如果斷言失敗,我們會查找錯誤消息,并執行一些后續操作,比如保存截圖和發送郵件通知。

請注意,這個例子中的 http://example.com/form 和表單字段的名稱都是假設的,你需要替換為你實際要測試的網頁和元素的屬性。此外,發送郵件的函數 send_email_notification 是一個占位符,你需要根據實際情況實現這個功能。

要運行這個測試,你可以直接運行 test_form_submission.py 文件,或者在命令行中輸入 pytest -v test_form_submission.py

……..........

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/18488.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/18488.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/18488.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

每日復盤-20240528

今日重點關注: 20240528 六日漲幅最大: ------1--------300956--------- 英力股份 五日漲幅最大: ------1--------301361--------- 眾智科技 四日漲幅最大: ------1--------301361--------- 眾智科技 三日漲幅最大: ------1--------301361--------- 眾智科技 二日漲…

前端編程語言——JS背景知識、JS基礎語法、算數運算符和關系運算符(1)

0、前言: JS全稱是JavaScript,是一種腳本語言,誕生于1995年,JS是由ECMAScript(包含js語法)、BOM(Brower Oject Model,和瀏覽器相關操作)、DOM(Document Obje…

ubuntu設置中文輸入法教程

在 Ubuntu 上設置中文輸入法可以通過以下步驟來完成。我們將以安裝和配置 fcitx 輸入法框架及其中文輸入法插件 fcitx-sunpinyin 為例。 ### 步驟一:安裝 fcitx 和中文輸入法插件 1. **更新軟件包列表** 打開終端并運行以下命令來更新軟件包列表: …

淺談—“文件映射”

目錄 文件映射頭文件&#xff1a; 核心函數 port flags 文件映射頭文件&#xff1a; #include<sys/mman.h> 核心函數 void *mmap(void *addr,size_t length, int port,int flags,int fd, off_t offset ); int munmap(void *addr,size_t length);// 對比free&#x…

聯邦和反射器實驗

拓撲圖 一.實驗要求 1.AS1存在兩個環回&#xff0c;一個地址為192.168.1.0/24&#xff0c;該地址不能在任何協議中宣告 AS3存在兩個環回&#xff0c;一個地址為192.168.2.0/24&#xff0c;該地址不能在任何協議中宣告 AS1還有一個環回地址為10.1.1.0/24&#xff…

PyTorch訓練關鍵點

1.背景 在網上找了一些資料用來訓練關鍵點&#xff0c;一般都是人臉或者車牌關鍵點訓練&#xff0c;或者是聯合檢測一起訓練。很少有是單獨基于輕量級網絡訓練單獨關鍵點模型的工程&#xff0c;本文簡單介紹一種簡單方法和代碼。 2.代碼模塊 &#xff08;1&#xff09;網絡結…

[C][動態內存分配][柔性數組]詳細講解

目錄 1.動態內存函數的介紹1.malloc2.free2.calloc4.realloc 2.常見的動態內存錯誤3.C/C程序的內存開辟4.柔性數組1.是什么&#xff1f;2.柔性數組的特點3.柔性數組的使用4.柔性數組的優勢 1.動態內存函數的介紹 1.malloc 函數原型&#xff1a;void* malloc(size_t size)功能…

iOS馬甲包, AB面,H5跳轉包,開發上架

什么是馬甲包 馬甲包一般是主APP的分身或者克隆&#xff0c;也或者說是穿著馬甲的一個APP&#xff0c;脫掉馬甲&#xff0c;APP將呈現另一種樣式&#xff0c;也就是常說的AB面APP。 1. 馬甲包、AB面、白包、h5跳轉包 2.蘋果開發者 3.TG&#xff1a;APPYKJ 4.喂心&#xff1…

【AI算法崗面試八股面經【超全整理】——概率論】

AI算法崗面試八股面經【超全整理】 概率論信息論機器學習CVNLP 目錄 1、古典概型、幾何概型2、條件概率、全概率公式、貝葉斯公式3、先驗概率、后驗概率4、離散型隨機變量的常見分布5、連續型隨機變量的常見分別6、數學期望、方差7、協方差、相關系數8、獨立、互斥、不相關9.大…

【PB案例學習筆記】-11動畫顯示窗口

寫在前面 這是PB案例學習筆記系列文章的第11篇&#xff0c;該系列文章適合具有一定PB基礎的讀者。 通過一個個由淺入深的編程實戰案例學習&#xff0c;提高編程技巧&#xff0c;以保證小伙伴們能應付公司的各種開發需求。 文章中設計到的源碼&#xff0c;小凡都上傳到了gite…

ESP32 - Micropython ESP-IDF 雙線教程 WIFI (2)

ESP32 - Micropython ESP-IDF 雙線教程 WIFI ESP32 - IDF WIFI轉換為ESP32-IDF的示例代碼main/main.c 代碼解釋 ESP32 - IDF WIFI 轉換為ESP32-IDF的示例代碼 以下是使用ESP-IDF&#xff08;Espressif IoT Development Framework&#xff09;編寫的連接到Wi-Fi網絡的示例代碼…

頸源性頭痛癥狀及表

頸源性頭痛一般表現為&#xff0c;就是說從枕后一直顳側&#xff0c;到太陽穴附近&#xff0c;這個是枕小的一個疼痛&#xff0c;還有一部分人從枕后&#xff0c;沿著一個弧線&#xff08;如下圖&#xff09;的軌跡到了前額&#xff0c;到我們前額&#xff0c;這樣一個疼痛&…

Bitbucket的原理及應用詳解(一)

本系列文章簡介&#xff1a; 在數字化和全球化的今天&#xff0c;軟件開發和項目管理已經成為企業成功的關鍵因素之一。隨著團隊規模的擴大和項目的復雜化&#xff0c;如何高效地協同開發、管理代碼和確保代碼質量成為了開發者和管理者面臨的重要挑戰。Bitbucket作為一款功能強…

深入解析線程上下文切換:掌握線程上下文切換的核心原理

1. 進程與線程的基本概念 1.1 進程與線程的區別 在操作系統中&#xff0c;進程和線程是兩個基本的概念&#xff0c;它們共同構成了程序的執行環境。了解它們的區別是理解線程上下文切換的基礎。 進程&#xff1a;進程是程序的一次執行實例。它是操作系統資源分配的基本單位。…

pytest的斷言與Selenium 模擬操作的一個例子

在Python中&#xff0c;pytest是一個流行的單元測試框架&#xff0c;而Selenium是一個用于自動化瀏覽器操作的工具。結合這兩者&#xff0c;我們可以編寫自動化測試腳本來驗證網頁的行為是否符合預期。下面是一個簡單的例子&#xff0c;展示了如何使用pytest的斷言功能以及Sele…

解決在Mac下使用npm報錯:Error: EACCES: permission denied

原因說明&#xff1a;沒有足夠的權限在 /usr/local/lib/node_modules 目錄下創建文件夾 這個錯誤表明你在安裝或更新 Vue.js&#xff08;vue&#xff09;包時&#xff0c;沒有足夠的權限在 /usr/local/lib/node_modules 目錄下創建文件夾。這通常是因為默認情況下&#xff0c;普…

【頭歌-Python】文件自學引導

禁止轉載&#xff0c;原文&#xff1a;https://blog.csdn.net/qq_45801887/article/details/139258793 參考教程&#xff1a;B站視頻講解——https://space.bilibili.com/3546616042621301 如果代碼存在問題&#xff0c;麻煩大家指正 ~ ~有幫助麻煩點個贊 ~ ~ 文件自學引導 第…

算數運算符

算術運算符是用于數值類型變量計算的運算符。 它的返回結果是數值。 賦值符號 關鍵知識點&#xff1a;先看右側&#xff0c;再看左側&#xff0c;把右側的值賦值給左側的變量。 附上代碼&#xff1a; string myName "唐唐"; int myAge 18; float myHeight 177.5…

202312青少年軟件編程(Python)等級考試試卷(四級)

第 1 題 【單選題】 下列有關分治算法思想的描述不正確的是?(?) A :將問題分解成的子問題具有相同的模式 B :將問題分解出的各個子問題相互之間有公共子問題 C :當問題足夠小時,可以直接求解 D :可以將子問題的求解結果合并成原問題的解 正確答案:B 試題解析: 第 2…

ADIL簡單測試實例

參考資料&#xff1a;https://blog.csdn.net/geyichongchujianghu/article/details/130045373這個連接是Java的代碼&#xff0c;我根據它的鏈接寫了一個kotlin版本的。 AIDL&#xff08;Android Interface Definition Language&#xff09;是Android平臺上用于進程間通信&…