91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎么用程序代碼提高自動化測試的穩(wěn)定性和可維護(hù)性

電子設(shè)計(jì) ? 2018-10-17 09:38 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

什么是裝飾器?

因?yàn)槲覀兊淖龇ㄒ蕾囇b飾器,所以在去做之前,先簡單介紹一下裝飾器。

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

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

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

很神奇,讓我們來看看實(shí)現(xiàn)retry的代碼:

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

就結(jié)果而言,執(zhí)行以下代碼:

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

test_login()

和執(zhí)行:

retry(test_login)()

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

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

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

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

編寫一個出錯重試裝飾器

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

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

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

pytest里的出錯重試機(jī)制實(shí)現(xiàn)

在測試框架pytest里,已經(jīng)實(shí)現(xiàn)了有關(guān)出錯重試的策略,我們首先需要安裝一個此類的插件,在cmd內(nèi)執(zhí)行以下命令安裝:

pip install pytest-rerunfailures

如果你需要將此機(jī)制應(yīng)用到所有的用例上,那么請?jiān)趫?zhí)行的時候使用如下命令(reruns是重試次數(shù)):

pytest --reruns 5

來執(zhí)行你的用例;

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

pytest --reruns 5 --reruns-delay 1

來執(zhí)行你的用例;

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

@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里的測試用例分層

剛剛我們實(shí)現(xiàn)了用例的出錯重試機(jī)制,但是這僅僅解決了腳本在不穩(wěn)定環(huán)境下的穩(wěn)定性;如果還想要腳本變得更加容易維護(hù),除了傳統(tǒng)的po模式使用例和元素分離之外,我們還可以引入測試用例分層機(jī)制。

為什么要采用分層機(jī)制?

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

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

這大大增強(qiáng)了用例的復(fù)用性和可維護(hù)性,這就是采用分層機(jī)制的原因,下面,我會就allure里的分層機(jī)制做介紹來討論具體如何實(shí)現(xiàn)。

allure的裝飾器@step

在allure里,我們可以通過裝飾器@step完成分層機(jī)制,具體的,當(dāng)你用@step裝飾一個方法時,當(dāng)你在用例里執(zhí)行這個方法,會在報(bào)告里,表現(xiàn)出這個被裝飾方法;而@step支持嵌套結(jié)構(gòu),這就意味著,你可以像搭積木一樣去搭你的步驟,而他們都會一一在報(bào)告里被展示。

下面直接用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()

運(yùn)行這個case后,報(bào)告是這樣的:

可以看到,

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

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

nested_step()又由nested_step_with_arguments(1, ‘a(chǎn)bc’)組成;

這樣就像搭積木一樣,組成了測試用例;而在報(bào)告里,也層級分明的標(biāo)識了步驟的嵌套結(jié)構(gòu)。

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 自動化測試
    +關(guān)注

    關(guān)注

    0

    文章

    268

    瀏覽量

    27815
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    Neway微波的穩(wěn)定性優(yōu)勢

    儀(VNA)等高精度設(shè)備,這些設(shè)備對信號的幅度穩(wěn)定性要求極高。Neway產(chǎn)品的低幅度波動特性使其能夠與這些高精度設(shè)備無縫對接,確保了測試結(jié)果的準(zhǔn)確和可靠。三、環(huán)境適應(yīng)
    發(fā)表于 01-05 08:48

    如何評估內(nèi)嵌式模組的穩(wěn)定性?

    運(yùn)行可靠與壽命。 綜合驗(yàn)證與品牌考量:在決策前,盡可能進(jìn)行模擬工況的壽命測試,這是驗(yàn)證其長期穩(wěn)定性的最有效方法。同時,選擇行業(yè)內(nèi)有良好口碑和豐富應(yīng)用案例的品牌,通常意味著更可靠的產(chǎn)品質(zhì)量、完善的技術(shù)支持與售后服務(wù),保障生產(chǎn)連續(xù)
    發(fā)表于 12-04 15:27

    CW32 MCU在高頻率運(yùn)行下的系統(tǒng)穩(wěn)定性的提升方案

    在嵌入式系統(tǒng)中,CW32 MCU的高頻率運(yùn)行能夠顯著提高系統(tǒng)的處理速度和響應(yīng)能力,但也伴隨著系統(tǒng)穩(wěn)定性問題的挑戰(zhàn),特別是跑飛現(xiàn)象的出現(xiàn)。本文將深入探討CW32 MCU在高頻率運(yùn)行時的系統(tǒng)穩(wěn)定性
    發(fā)表于 12-04 08:04

    高精度壓力測量器:國產(chǎn)萬分級精度零點(diǎn)穩(wěn)定性和滿量程穩(wěn)定性能應(yīng)用場景分析

    壓力傳感器、壓力表。例如國家計(jì)量院或企業(yè)計(jì)量實(shí)驗(yàn)室的壓力校準(zhǔn)裝置,需依賴該級別傳感器確保校準(zhǔn)結(jié)果的溯源和準(zhǔn)確。 2. 能源勘探與新能源領(lǐng)域 能源行業(yè)對壓力監(jiān)測的 “長期穩(wěn)定性” 要求苛刻,尤其是井下、高壓
    發(fā)表于 10-28 10:40

    如何保證合金電阻的穩(wěn)定性與精度?

    保證合金電阻的穩(wěn)定性與精度需從材料選擇、制造工藝、結(jié)構(gòu)設(shè)計(jì)、環(huán)境控制及測試驗(yàn)證等多維度綜合施策。以下從技術(shù)原理、關(guān)鍵措施及實(shí)際應(yīng)用三個層面展開分析: 一、材料選擇:奠定穩(wěn)定性基礎(chǔ) 合金電阻的精度
    的頭像 發(fā)表于 10-27 15:29 ?625次閱讀
    如何保證合金電阻的<b class='flag-5'>穩(wěn)定性</b>與精度?

    測試小白3分鐘上手,零代碼自動化測試平臺,15分鐘搭建自動化測試方案

    還在為不懂代碼、搭建測試方案耗時久而發(fā)愁?ATECLOUD 零代碼自動化測試平臺,專為自動化
    的頭像 發(fā)表于 09-22 17:52 ?910次閱讀
    <b class='flag-5'>測試</b>小白3分鐘上手,零<b class='flag-5'>代碼</b><b class='flag-5'>自動化</b><b class='flag-5'>測試</b>平臺,15分鐘搭建<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>方案

    電源模塊的短路保護(hù)如何通過自動化測試軟件完成測試

    在當(dāng)今電力電子領(lǐng)域,電源模塊的可靠至關(guān)重要,短路保護(hù)作為其關(guān)鍵特性,需通過精確的自動化測試軟件進(jìn)行驗(yàn)證。本文將整理如何借助自動化測試軟件A
    的頭像 發(fā)表于 09-03 19:10 ?902次閱讀
    電源模塊的短路保護(hù)如何通過<b class='flag-5'>自動化</b><b class='flag-5'>測試</b>軟件完成<b class='flag-5'>測試</b>

    如何用Renix實(shí)現(xiàn)網(wǎng)絡(luò)測試自動化: 從配置分離到多廠商設(shè)備支持

    文章主要介紹如何使用Renix高層封裝API編寫自動化腳本的基礎(chǔ)知識和技巧。只要您熟悉測試流程,不需要很強(qiáng)的代碼能力就可以順利編寫自動化測試
    的頭像 發(fā)表于 08-27 15:21 ?694次閱讀
    如何用Renix實(shí)現(xiàn)網(wǎng)絡(luò)<b class='flag-5'>測試</b><b class='flag-5'>自動化</b>: 從配置分離到多廠商設(shè)備支持

    三相全自動穩(wěn)壓器在工業(yè)自動化領(lǐng)域的重要與應(yīng)用

    在工業(yè)自動化領(lǐng)域中,電力的穩(wěn)定性至關(guān)重要。我們都知道,電力就像一條河流,穩(wěn)定的水流才能保證工業(yè)設(shè)備的平穩(wěn)運(yùn)行。而在這條河流中,三相全自動穩(wěn)壓器就像是一個水閘,控制著水流的強(qiáng)度和方向,確
    的頭像 發(fā)表于 08-18 15:19 ?800次閱讀
    三相全<b class='flag-5'>自動</b>穩(wěn)壓器在工業(yè)<b class='flag-5'>自動化</b>領(lǐng)域的重要<b class='flag-5'>性</b>與應(yīng)用

    人工智能在解決工業(yè)自動化穩(wěn)定性瓶頸方面有哪些應(yīng)用?

    人工智能通過多維度應(yīng)用為工業(yè)自動化穩(wěn)定性提供了系統(tǒng)解決方案,既能減少突發(fā)故障影響,又能動態(tài)適配生產(chǎn)變化。隨著技術(shù)深化,其將進(jìn)一步推動工業(yè)生產(chǎn)向更可靠、高效、智能的方向升級,為制造業(yè)高質(zhì)量發(fā)展注入持續(xù)動力。
    的頭像 發(fā)表于 08-13 10:14 ?687次閱讀
    人工智能在解決工業(yè)<b class='flag-5'>自動化</b><b class='flag-5'>穩(wěn)定性</b>瓶頸方面有哪些應(yīng)用?

    探究薄膜電容的溫度穩(wěn)定性,適應(yīng)復(fù)雜環(huán)境變化

    薄膜電容作為電子電路中不可或缺的被動元件,其性能穩(wěn)定性直接影響整個系統(tǒng)的可靠。其中,溫度穩(wěn)定性是衡量薄膜電容質(zhì)量的關(guān)鍵指標(biāo)之一,尤其在航空航天、新能源汽車、工業(yè)自動化等復(fù)雜環(huán)境應(yīng)用中
    的頭像 發(fā)表于 08-11 17:08 ?1677次閱讀

    螺桿支撐座安裝后如何檢驗(yàn)它的穩(wěn)定性?

    自動化設(shè)備中,螺桿支撐座起著關(guān)鍵的作用,用于固定和支撐滾珠螺桿或?qū)к墸_保傳動系統(tǒng)的穩(wěn)定性和精度。
    的頭像 發(fā)表于 07-24 17:29 ?559次閱讀
    螺桿支撐座安裝后如何檢驗(yàn)它的<b class='flag-5'>穩(wěn)定性</b>?

    MUN12AD03-SEC的熱性能如何影響其穩(wěn)定性?

    ,以提升MUN12AD03-SEC的輸出紋波和動態(tài)響應(yīng)。輸入電容器需要盡量接近MUN12AD03-SEC的輸入管腳,以最小輸入紋波電壓并保證MUN12AD03-SEC穩(wěn)定性能。良好的濾波設(shè)計(jì)可以減少因電源紋波和噪聲引起的熱量產(chǎn)生,從而間接
    發(fā)表于 05-15 09:41

    如何維護(hù)微波網(wǎng)絡(luò)分析儀以確保測量精度和穩(wěn)定性

    維護(hù)微波網(wǎng)絡(luò)分析儀以確保測量精度和穩(wěn)定性,需從環(huán)境控制、日常操作、定期校準(zhǔn)、硬件維護(hù)和軟件管理五個維度系統(tǒng)實(shí)施。以下是具體措施及實(shí)施要點(diǎn):一、環(huán)境控制:基礎(chǔ)保障 溫濕度管理 溫度:
    發(fā)表于 04-23 14:53

    捷多邦在工業(yè)自動化 PCB 領(lǐng)域,怎樣達(dá)成極高穩(wěn)定性?

    在工業(yè)自動化領(lǐng)域,PCB 的穩(wěn)定性直接關(guān)乎整個系統(tǒng)的可靠運(yùn)行。捷多邦的工業(yè)自動化 PCB 在業(yè)內(nèi)以極高穩(wěn)定性著稱,其背后有著諸多關(guān)鍵因素。 某大型工廠在升級
    的頭像 發(fā)表于 04-07 11:15 ?684次閱讀