女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

什么是裝飾器?

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

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

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

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

很神奇,讓我們來(lái)看看實(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ì)上就是一個(gè)函數(shù),這個(gè)函數(shù)接收其他函數(shù)(或者類)作為參數(shù),通過(guò)對(duì)這個(gè)函數(shù)(或者類)的調(diào)用或者修改,完成不更改原始函數(shù)而修改該函數(shù)的功能。

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

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

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

編寫一個(gè)出錯(cuò)重試裝飾器

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

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

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

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

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

pip install pytest-rerunfailures

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

pytest --reruns 5

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

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

pytest --reruns 5 --reruns-delay 1

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

如果你只想對(duì)某幾個(gè)測(cè)試用例應(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里的測(cè)試用例分層

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

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

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

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

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

allure的裝飾器@step

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

可以看到,

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

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

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

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

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

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

    工業(yè)自動(dòng)化領(lǐng)域?qū)д竦念l率穩(wěn)定性要求有多高?

    在工業(yè)自動(dòng)化領(lǐng)域,精確的頻率控制對(duì)于系統(tǒng)的穩(wěn)定運(yùn)行和生產(chǎn)效率的提升具有決定性的意義。從安全應(yīng)用到生產(chǎn)流程,頻率控制的重要不容忽視。例如,安全應(yīng)用中使用的典型協(xié)議包括Wi-Fi、低功耗
    的頭像 發(fā)表于 02-18 18:11 ?306次閱讀
    工業(yè)<b class='flag-5'>自動(dòng)化</b>領(lǐng)域?qū)д竦念l率<b class='flag-5'>穩(wěn)定性</b>要求有多高?

    如何通過(guò)浮動(dòng)板對(duì)板連接器提升工業(yè)自動(dòng)化設(shè)備的可靠

    隨著工業(yè)自動(dòng)化設(shè)備的普及與發(fā)展,設(shè)備的可靠穩(wěn)定性已成為生產(chǎn)效能提升的關(guān)鍵因素之一。在工業(yè)自動(dòng)化領(lǐng)域,電氣連接的質(zhì)量直接關(guān)系到設(shè)備運(yùn)行的穩(wěn)定性
    的頭像 發(fā)表于 01-18 10:58 ?568次閱讀

    如何提高嵌入式代碼質(zhì)量?

    嵌入式系統(tǒng)的發(fā)展已經(jīng)深刻地影響了我們?nèi)粘I畹姆椒矫婷妫瑥闹悄芗揖拥狡嚳刂葡到y(tǒng),再到醫(yī)療設(shè)備和工業(yè)自動(dòng)化等領(lǐng)域,嵌入式系統(tǒng)無(wú)處不在。嵌入式軟件的質(zhì)量直接關(guān)系到系統(tǒng)的安全穩(wěn)定性和性能。因此,
    發(fā)表于 01-15 10:48

    旋轉(zhuǎn)測(cè)徑儀的底座如何保證穩(wěn)定性

    保證旋轉(zhuǎn)測(cè)徑儀底座的穩(wěn)定性。這將有助于提高測(cè)量精度、延長(zhǎng)儀器使用壽命并確保測(cè)量結(jié)果的可靠。 網(wǎng)站名稱:保定市藍(lán)鵬測(cè)控科技有限公司 可根據(jù)客戶需求提供解決方案,定制產(chǎn)品。 歡迎QQ咨詢
    發(fā)表于 01-09 14:04

    電源濾波器的可維護(hù)性如何

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

    如何測(cè)試晶振的穩(wěn)定性

    以下是一些常用的方法來(lái)測(cè)試晶振的穩(wěn)定性
    的頭像 發(fā)表于 11-29 16:41 ?1073次閱讀

    如何測(cè)試DDR內(nèi)存的穩(wěn)定性

    測(cè)試DDR內(nèi)存的穩(wěn)定性是確保計(jì)算機(jī)系統(tǒng)穩(wěn)定運(yùn)行的重要步驟。以下是一些常用的測(cè)試DDR內(nèi)存穩(wěn)定性的方法: 一、使用專業(yè)
    的頭像 發(fā)表于 11-29 15:01 ?2705次閱讀

    質(zhì)量視角下的系統(tǒng)穩(wěn)定性保障--穩(wěn)定性保障常態(tài)自動(dòng)化實(shí)踐

    常態(tài)穩(wěn)定性治理。在常態(tài)治理過(guò)程中我們將識(shí)別問(wèn)題等重復(fù)性有規(guī)律的工作實(shí)現(xiàn)自動(dòng)化,技術(shù)人員更專注于解決問(wèn)題。 二、穩(wěn)定性治理常態(tài)
    的頭像 發(fā)表于 11-19 11:19 ?1125次閱讀
    質(zhì)量視角下的系統(tǒng)<b class='flag-5'>穩(wěn)定性</b>保障--<b class='flag-5'>穩(wěn)定性</b>保障常態(tài)<b class='flag-5'>化</b><b class='flag-5'>自動(dòng)化</b>實(shí)踐

    Orin芯片的穩(wěn)定性測(cè)試

    自動(dòng)駕駛技術(shù)迅速發(fā)展的今天,芯片的穩(wěn)定性和可靠成為了衡量其性能的重要指標(biāo)。NVIDIA的Orin芯片,作為自動(dòng)駕駛領(lǐng)域的一項(xiàng)突破產(chǎn)品,
    的頭像 發(fā)表于 10-27 16:56 ?1461次閱讀

    探索Playwright:前端自動(dòng)化測(cè)試的新紀(jì)元

    與應(yīng)用的交互,能夠高效地執(zhí)行重復(fù)性測(cè)試任務(wù),加快測(cè)試周期,提升測(cè)試覆蓋率,從而更早地發(fā)現(xiàn)缺陷和問(wèn)題。這不僅提高了軟件的穩(wěn)定性和可靠
    的頭像 發(fā)表于 10-22 14:27 ?707次閱讀

    鳳凰動(dòng)力舵輪驅(qū)動(dòng)輪的穩(wěn)定性如何影響AGV的運(yùn)行效率和穩(wěn)定性

    的準(zhǔn)確。一個(gè)穩(wěn)定的舵輪能夠確保AGV在復(fù)雜的工作環(huán)境中精確地按照預(yù)定路徑行駛,避免偏離或產(chǎn)生誤差。這有助于提高AGV的導(dǎo)航精度,減少因定位不準(zhǔn)確而導(dǎo)致的重復(fù)作業(yè)或無(wú)效移動(dòng),從而提高運(yùn)
    的頭像 發(fā)表于 08-27 13:20 ?700次閱讀
    鳳凰動(dòng)力舵輪驅(qū)動(dòng)輪的<b class='flag-5'>穩(wěn)定性</b>如何影響AGV的運(yùn)行效率和<b class='flag-5'>穩(wěn)定性</b>

    OPA2333P作為精準(zhǔn)ADC采集跟隨器電路應(yīng)該怎么設(shè)計(jì)能提高采集的精準(zhǔn)穩(wěn)定性

    OPA2333P作為精準(zhǔn)ADC采集跟隨器電路應(yīng)該怎么設(shè)計(jì)能提高采集的精準(zhǔn)穩(wěn)定性
    發(fā)表于 08-02 06:05

    自動(dòng)控制原理如何提高系統(tǒng)穩(wěn)定性

    自動(dòng)控制原理是研究如何通過(guò)自動(dòng)控制系統(tǒng)實(shí)現(xiàn)對(duì)被控對(duì)象的控制,以達(dá)到預(yù)定的性能指標(biāo)和穩(wěn)定性要求的科學(xué)。在自動(dòng)控制系統(tǒng)中,穩(wěn)定性是一個(gè)非常重要的
    的頭像 發(fā)表于 07-29 10:30 ?1880次閱讀