在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

怎么用程序代碼提高自動化測試的穩定性和可維護性

電子設計 ? 2018-10-17 09:38 ? 次閱讀

談到穩定性,不得不說的就是“出錯重試”機制了,在自動化測試中,由于環境一般都是測試環境,經常會有各種各種的抽風情況影響測試結果,這樣就為測試的穩定性帶來了挑戰,畢竟誰也不想自己的腳本一天到晚的出各種未知問題,而往往這種環境的抽風(通常是前端頁面的響應速度和后端接口的響應速度)帶來的影響是暫時的,可能上一秒失敗了,下一秒你再執行又好了,在這種情況下,如果你有一個出錯重試機制,起碼可以在這種暫時性的影響下讓你的腳本安然無恙,下面我們具體的說一下做法。

什么是裝飾器?

因為我們的做法依賴裝飾器,所以在去做之前,先簡單介紹一下裝飾器。

裝飾器,表現形式為,在方法(或者類)的上面加上@xxx這樣的語句,假如我們已經實現了一個裝飾器名叫retry,那么我們想用它就這么用:

@retry
def test_login():
print("test")
error = 1/0

如果retry實現了出錯再次重試(稍后再說如何實現),那么這么使用的話,就會讓test_login這個case在執行出錯的時候再次執行。

很神奇,讓我們來看看實現retry的代碼:

def retry(func):
def warp():
for time in range(3):
try:
func()
except:
pass
return warp

就結果而言,執行以下代碼:

@retry
def test_login():
print("test")
error = 1/0

test_login()

和執行:

retry(test_login)()

是等價的,由此我們可以看出,裝飾器其實本質上就是一個函數,這個函數接收其他函數(或者類)作為參數,通過對這個函數(或者類)的調用或者修改,完成不更改原始函數而修改該函數的功能。

在這里還有一個知識點,你有沒有想過,在retry內部的函數warp(),是怎么拿到func這個參數來執行的?執行retry函數return的是warp這個函數,而warp并沒有接受func這個傳參啊。

這就是python里的閉包的概念,閉包就是指運行時自帶上下文的函數,比如這里的warp這個函數,他運行的時候自帶了上層函數retry傳給他的func這個函數,所以才可以在運行時對func進行處理和輸出。

了解了裝飾器和閉包,那么下面就很容易做到對測試用例的出錯重試機制了。

編寫一個出錯重試裝飾器

現在,我們來嘗試自己編寫一個用于測試用例的出錯重試裝飾器,代碼如下:

def retry(times=3,wait_time=10):
def warp_func(func):
def fild_retry(*args,**kwargs):
for time in range(times):
try:
func(*args,**kwargs)
return
except:
time.sleep(wait_time)
return fild_retry
return warp_func

這個裝飾器可以通過傳入重試次數(times)和重試等待時間(wait_time),對待測用例實行重試機制。

pytest里的出錯重試機制實現

在測試框架pytest里,已經實現了有關出錯重試的策略,我們首先需要安裝一個此類的插件,在cmd內執行以下命令安裝:

pip install pytest-rerunfailures

如果你需要將此機制應用到所有的用例上,那么請在執行的時候使用如下命令(reruns是重試次數):

pytest --reruns 5

來執行你的用例;

如果你期望加上出錯重試的等待時間,請使用如下命令(reruns-delay是等待時間):

pytest --reruns 5 --reruns-delay 1

來執行你的用例;

如果你只想對某幾個測試用例應用重試策略,你可以使用裝飾器:

@pytest.mark.flaky(reruns=5, reruns_delay=2)

例如:

@pytest.mark.flaky(reruns=5, reruns_delay=2)
def test_example():
import random
assert random.choice([True, False])

Allure里的測試用例分層

剛剛我們實現了用例的出錯重試機制,但是這僅僅解決了腳本在不穩定環境下的穩定性;如果還想要腳本變得更加容易維護,除了傳統的po模式使用例和元素分離之外,我們還可以引入測試用例分層機制。

為什么要采用分層機制?

傳統的po模式,僅僅實現了用例和元素分離,這一定層面上保障了用例的可維護性,起碼不必頭疼于元素的變更會讓用例到處失效;但是這還不夠,例如,現在有三個case,他們都包含了以下步驟:登錄、打開工作臺、進入個人中心;那么如果不做分層,這三個用例會把這三個步驟都寫一遍,如果某天頁面的變動導致其中一個步驟需要更改,那么你不得不去每個用例里去更新那個步驟。

而如果,我們把用例當做是堆積木,登錄、打開工作臺、進入個人中心這三個步驟都只是個積木,那么我們寫用例的時候,只需要在用到這個步驟時,把積木搭上去;如果某一天,其中一個積木的步驟有變動,那么只需要去更改這個積木的內容,而無需在每個使用了這個積木的用例里去改動。

這大大增強了用例的復用性和可維護性,這就是采用分層機制的原因,下面,我會就allure里的分層機制做介紹來討論具體如何實現。

allure的裝飾器@step

在allure里,我們可以通過裝飾器@step完成分層機制,具體的,當你用@step裝飾一個方法時,當你在用例里執行這個方法,會在報告里,表現出這個被裝飾方法;而@step支持嵌套結構,這就意味著,你可以像搭積木一樣去搭你的步驟,而他們都會一一在報告里被展示。

下面直接用allure的官方示例作做舉例:

import allure
import pytest

from .steps import imported_step


@allure.step
def passing_step():
pass


@allure.step
def step_with_nested_steps():
nested_step()


@allure.step
def nested_step():
nested_step_with_arguments(1, 'abc')


@allure.step
def nested_step_with_arguments(arg1, arg2):
pass


def test_with_imported_step():
passing_step()
imported_step()


def test_with_nested_steps():
passing_step()
step_with_nested_steps()

運行這個case后,報告是這樣的:

可以看到,

test_with_nested_steps由passing_step()和step_with_nested_steps()這兩個方法組成;

而step_with_nested_steps()又由nested_step()組成;

nested_step()又由nested_step_with_arguments(1, ‘abc’)組成;

這樣就像搭積木一樣,組成了測試用例;而在報告里,也層級分明的標識了步驟的嵌套結構。

這樣,我們就可以通過一個又一個@step裝飾的方法,組成測試用例;同時報告里也會支持層級顯示;從而完成我們的分層機制。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 自動化測試
    +關注

    關注

    0

    文章

    229

    瀏覽量

    27260
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    如何維護微波網絡分析儀以確保測量精度和穩定性

    維護微波網絡分析儀以確保測量精度和穩定性,需從環境控制、日常操作、定期校準、硬件維護和軟件管理五個維度系統實施。以下是具體措施及實施要點:一、環境控制:基礎保障 溫濕度管理 溫度:
    發表于 04-23 14:53

    捷多邦在工業自動化 PCB 領域,怎樣達成極高穩定性

    在工業自動化領域,PCB 的穩定性直接關乎整個系統的可靠運行。捷多邦的工業自動化 PCB 在業內以極高穩定性著稱,其背后有著諸多關鍵因素。 某大型工廠在升級
    的頭像 發表于 04-07 11:15 ?178次閱讀

    工業自動化領域對晶振的頻率穩定性要求有多高?

    在工業自動化領域,精確的頻率控制對于系統的穩定運行和生產效率的提升具有決定性的意義。從安全應用到生產流程,頻率控制的重要不容忽視。例如,安全應用中使用的典型協議包括Wi-Fi、低功耗
    的頭像 發表于 02-18 18:11 ?241次閱讀
    工業<b class='flag-5'>自動化</b>領域對晶振的頻率<b class='flag-5'>穩定性</b>要求有多高?

    如何通過浮動板對板連接器提升工業自動化設備的可靠

    隨著工業自動化設備的普及與發展,設備的可靠穩定性已成為生產效能提升的關鍵因素之一。在工業自動化領域,電氣連接的質量直接關系到設備運行的穩定性
    的頭像 發表于 01-18 10:58 ?517次閱讀

    如何提高嵌入式代碼質量?

    嵌入式系統的發展已經深刻地影響了我們日常生活的方方面面,從智能家居到汽車控制系統,再到醫療設備和工業自動化等領域,嵌入式系統無處不在。嵌入式軟件的質量直接關系到系統的安全穩定性和性能。因此,
    發表于 01-15 10:48

    旋轉測徑儀的底座如何保證穩定性

    保證旋轉測徑儀底座的穩定性。這將有助于提高測量精度、延長儀器使用壽命并確保測量結果的可靠。 網站名稱:保定市藍鵬測控科技有限公司 可根據客戶需求提供解決方案,定制產品。 歡迎QQ咨詢
    發表于 01-09 14:04

    電源濾波器的可維護性如何

    電源濾波器可維護性包括模塊設計、易拆卸結構、耐腐蝕及散熱材料、定期清潔檢查、元件更換,維護成本低,智能設計減少人工需求,定期性能測試監控
    的頭像 發表于 01-09 09:48 ?395次閱讀
    電源濾波器的<b class='flag-5'>可維護性</b>如何

    如何測試晶振的穩定性

    以下是一些常用的方法來測試晶振的穩定性
    的頭像 發表于 11-29 16:41 ?942次閱讀

    如何測試DDR內存的穩定性

    測試DDR內存的穩定性是確保計算機系統穩定運行的重要步驟。以下是一些常用的測試DDR內存穩定性的方法: 一、使用專業
    的頭像 發表于 11-29 15:01 ?2489次閱讀

    質量視角下的系統穩定性保障--穩定性保障常態自動化實踐

    常態穩定性治理。在常態治理過程中我們將識別問題等重復性有規律的工作實現自動化,技術人員更專注于解決問題。 二、穩定性治理常態
    的頭像 發表于 11-19 11:19 ?1022次閱讀
    質量視角下的系統<b class='flag-5'>穩定性</b>保障--<b class='flag-5'>穩定性</b>保障常態<b class='flag-5'>化</b><b class='flag-5'>自動化</b>實踐

    Orin芯片的穩定性測試

    自動駕駛技術迅速發展的今天,芯片的穩定性和可靠成為了衡量其性能的重要指標。NVIDIA的Orin芯片,作為自動駕駛領域的一項突破產品,
    的頭像 發表于 10-27 16:56 ?1390次閱讀

    探索Playwright:前端自動化測試的新紀元

    與應用的交互,能夠高效地執行重復性測試任務,加快測試周期,提升測試覆蓋率,從而更早地發現缺陷和問題。這不僅提高了軟件的穩定性和可靠
    的頭像 發表于 10-22 14:27 ?623次閱讀

    鳳凰動力舵輪驅動輪的穩定性如何影響AGV的運行效率和穩定性

    的準確。一個穩定的舵輪能夠確保AGV在復雜的工作環境中精確地按照預定路徑行駛,避免偏離或產生誤差。這有助于提高AGV的導航精度,減少因定位不準確而導致的重復作業或無效移動,從而提高
    的頭像 發表于 08-27 13:20 ?640次閱讀
    鳳凰動力舵輪驅動輪的<b class='flag-5'>穩定性</b>如何影響AGV的運行效率和<b class='flag-5'>穩定性</b>

    OPA2333P作為精準ADC采集跟隨器電路應該怎么設計能提高采集的精準穩定性

    OPA2333P作為精準ADC采集跟隨器電路應該怎么設計能提高采集的精準穩定性
    發表于 08-02 06:05

    自動控制原理如何提高系統穩定性

    自動控制原理是研究如何通過自動控制系統實現對被控對象的控制,以達到預定的性能指標和穩定性要求的科學。在自動控制系統中,穩定性是一個非常重要的
    的頭像 發表于 07-29 10:30 ?1752次閱讀
    主站蜘蛛池模板: 久久国产精品无码网站 | 欧美性另类69xxx| 天天爱天天做天天爽天天躁 | 色噜噜在线视频 | 精品国产乱码久久久久久浪潮 | 高清一级| 日本不卡视频免费 | 男女交性特一级 | 在线99热 | 精品亚洲大全 | 奇米小说 | 欧洲性开放大片免费观看视频 | 一区二区三区免费视频播放器 | 国产精品久久久久天天影视 | 最新精品| 国产精品伦视频观看免费 | 免费网站你懂得 | 中文字幕在线视频第一页 | 欧美黄又粗暴一进一出抽搐 | 免费在线观看一级毛片 | 亚洲色图欧美色 | 亚洲伊人久久网 | 色婷婷久久免费网站 | 欧美日韩一区视频 | 欧美日韩免费大片 | 国产在线视频h | 日本加勒比高清一本大道 | 日本大片免费播放网站 | 手机精品视频在线观看免费 | 欧美性天天影院 | 天天操夜夜爽 | 精品成人毛片一区二区视 | 天天干天天操天天添 | 拍拍拍成人免费高清视频 | 碰免费人人人视频 | 特黄特色大片免费视频大全 | 国产免费小视频 | 第四色男人天堂 | 精品在线视频一区 | 天堂网 | 正在播放久久 |