国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

互聯(lián)網 網站建設搜狗收錄提交入口

互聯(lián)網 網站建設,搜狗收錄提交入口,wordpress獲取分類目錄,重慶營銷型網站開發(fā)此前一直認為fixture就叫python中的裝飾器,學習后才發(fā)現(xiàn)decorators才是裝飾器,fixture是pytest框架的夾具,只是通過裝飾器去定義和使用。所以要了解fixture就得先了解python裝飾器。 一、裝飾器(decorators) 1.定義 裝飾器(dec…

此前一直認為fixture就叫python中的裝飾器,學習后才發(fā)現(xiàn)decorators才是裝飾器,fixture是pytest框架的夾具,只是通過裝飾器去定義和使用。所以要了解fixture就得先了解python裝飾器。

一、裝飾器(decorators)

1.定義

裝飾器(decorators)是 Python 中的一種高級功能,允許動態(tài)地修改函數(shù)或類的行為。裝飾器是一種函數(shù) ,它接受一個函數(shù)作為參數(shù),并返回一個新的函數(shù)或修改原來的函數(shù)。
在這里插入圖片描述

2.使用場景

日志記錄(函數(shù)的調用信息、參數(shù)、返回值)、性能分析(函數(shù)執(zhí)行時間)、權限控制(函數(shù)訪問權限)、緩存(函數(shù)結果緩存)

3.裝飾器使用方法

我采用一個方法來寫清楚它的使用方法以及對參數(shù)的接收處理,按步驟查看注釋

1)基本語法

#1.聲明裝飾器函數(shù)new_function,用original_function接收原始函數(shù)old_function
def new_function(original_function):#3.聲明一個inner_function方法---接受原始函數(shù)的參數(shù)并進行處理。#*args表示接收任意數(shù)量的位置參數(shù)--非關鍵字參數(shù),并打包成一個元組。#**kwarg表示接收任意數(shù)量的關鍵字參數(shù)--如key=value,并打包成一個字典。#兩種方式作用為了兼容所有傳進來的參數(shù)類型def inner_function(*args, **kwargs):# 4.調用原始函數(shù)前添加的新操作print("添加的前置操作,對關鍵字參數(shù)進行處理")#對關鍵字參數(shù)處理--元組不支持修改print("傳進來的元組參數(shù):",args)print("傳進來的關鍵字參數(shù):",kwargs)kwargs["a"]=10# 5.將修改后的參數(shù)傳回result = original_function(*args, **kwargs)# 6.調用原始函數(shù)后添加的新操作print("添加的后置操作")return result#7.返回新函數(shù)inner_functionreturn inner_function#8.使用裝飾器@new_function,現(xiàn)在調用的函數(shù)實際是處理后的新函數(shù)
#等同于old_function= new_function(old_function)
@new_function
#2.聲明原始函數(shù)old_function
def old_function(arg1,arg2,a=None):print("原始函數(shù)")print("修改過后的a:",a)#9.帶參數(shù)調用函數(shù)
old_function(1, 3, a=4)

執(zhí)行結果:
在這里插入圖片描述
多個裝飾器裝飾方法時,會依次調用。

2)內置裝飾器
除了裝飾方法以外,裝飾器還可以裝飾類。Python 提供了一些內置的裝飾器,例如:
@staticmethod: 將方法定義為靜態(tài)方法,不需要實例化類可直接調用。
@classmethod: 將方法定義為類方法,第一個參數(shù)是類本身(通常命名為 cls)。
@property: 將方法轉換為屬性,使其可以像屬性一樣訪問。

二、fixture夾具

如果理解了裝飾器是什么,就不難理解fixture夾具了。在pytest測試框架中,夾具(fixture–英文釋義固定器械)是一種用于為測試用例提供預置環(huán)境或共享資源的機制。個人理解fixture就是pytest封裝好了的一個裝飾器函數(shù)名稱----@pytest.fixture。既然fixture是封裝好的,那一定有指定的參數(shù)和調用方法。

1.fixture的參數(shù)

在這里插入圖片描述
如上圖封裝好的fixture方法可見,fixture有五種傳參:

#實例用法
@pytest.fixture(scope='',autouse='',params="",ids="",name="")

1)scope—fixture的作用范圍,一共有四種
function(函數(shù)級):每一個函數(shù)或方法都會調用
class(類級別):每個測試類只運行一次
module(模塊級):每一個.py文件調用一次
package(包級):每一個python包只調用一次(暫不支持)
session(會話級):每次會話只需要運行一次,會話內所有方法及類,模塊都共享這個方法
執(zhí)行優(yōu)先級:session > module > class > function

這個地方先不舉例,和2聯(lián)合起來舉例,通過2的示例,將會很清楚scope的執(zhí)行過程

2)autouse—是否自動執(zhí)行
默認為False,設置為True后設置的執(zhí)行范圍scope里面包含的所有用例都會執(zhí)行這個方法。不用再手動在每個要裝飾的方法上使用@pytest.mark.usefixture(“fixturename”)。
示例代碼:

import logging
import pytest
from allure_commons import fixture# 會話級別的 fixture - 整個測試運行期間只執(zhí)行一次
@pytest.fixture(scope="session", autouse=True)
def session_fixture():print("\n===== session 范圍 fixture 開始 (整個測試會話只執(zhí)行一次) =====")yieldprint("\n===== session 范圍 fixture 結束 (所有測試完成后執(zhí)行) =====")# 模塊級別的 fixture - 每個測試模塊只執(zhí)行一次
@pytest.fixture(scope="module", autouse=True)
def module_fixture():print("\n***** module 范圍 fixture 開始 (每個.py文件只執(zhí)行一次) *****")yieldprint("\n***** module 范圍 fixture 結束 (文件所有測試完成后執(zhí)行) *****")# 類級別的 fixture - 每個測試類執(zhí)行一次
@pytest.fixture(scope="class", autouse=True)
def class_fixture():print("\n------ class 范圍 fixture 開始 (每個測試類只執(zhí)行一次) ------")yieldprint("\n------ class 范圍 fixture 結束 (類中所有測試完成后執(zhí)行) ------")# 函數(shù)級別的 fixture - 每個測試函數(shù)執(zhí)行一次
@pytest.fixture(scope="function", autouse=True)
def function_fixture():print("\n>>>>>> function 范圍 fixture 開始 (每個測試方法執(zhí)行一次) >>>>>>")yieldprint("\n<<<<<< function 范圍 fixture 結束 (每個測試方法完成后執(zhí)行) <<<<<<")def test_outside_class():print("執(zhí)行類外的測試函數(shù)")assert Trueclass TestClass:def test_case1(self):print("執(zhí)行test_case1")assert Truedef test_case2(self):print("執(zhí)行test_case2")assert True

執(zhí)行打印:
在這里插入圖片描述
3)params—參數(shù)
示例代碼:

import pytest@pytest.fixture(scope="function",params=[1,2,3,4])
#固定寫法用request表示參數(shù)
def function_fixture(request):#固定寫法提取參數(shù)yield request.param#這里用注釋來使用裝飾器
@pytest.mark.usefixtures("function_fixture")
def test_param():print("test")

運行結果:
在這里插入圖片描述

4)ids—給params參數(shù)每一個值設置變量名
上述params示例中,可以看到傳入了參數(shù)1、2、3、4。但是沒有參數(shù)名稱,不太方便去使用。這個ids就是給參數(shù)設置變量名。
示例代碼:

import pytest@pytest.fixture(scope="function",params=[1,2,3,4],ids=['p1','p2','p3','p4'])
#固定寫法用request表示參數(shù)
def function_fixture(request):#固定寫法提取參數(shù)yield request.param#直接在測試函數(shù)參數(shù)中聲明fixture名稱來獲取參數(shù)
def test_param(function_fixture):print(f"當前參數(shù)值: {function_fixture}")print("test")

運行結果:
在這里插入圖片描述
5)name–給fixture標記的方法取別名
例如以上的function_fixture我給它起名為fixname
示例代碼:

import pytest@pytest.fixture(scope="function",params=[1,2,3,4],ids=['p1','p2','p3','p4'],name="fixname")
#固定寫法用request表示參數(shù)
def function_fixture(request):#固定寫法提取參數(shù)yield request.param#直接在測試函數(shù)參數(shù)中聲明fixture名稱來獲取參數(shù)
def test_param(fixname):print(f"當前參數(shù)值: {fixname}")print("test")

運行結果:
在這里插入圖片描述

2.fixture配置conftest.py使用

上述代碼中是在每個測試用例py中定義的fixture,測試過程中會有很多通用的操作,豈不是每個用例中都要定義一遍,這里就用到了conftest.py來管理。
conftest.py主要作用是用于定義和共享測試配置、Fixture以及其他測試相關的設置、避免重復代碼,提高測試代碼的可維護性和可重用性,使測試代碼本身更專注于測試邏輯—簡單的說就是可以跨測試用例共享數(shù)據(jù)和資源,對測試前后的配置和數(shù)據(jù)處理等操作
注:和conftest.py同一目錄以及子目錄的測試均可使用其中裝飾器。

示例代碼:
test_conf.py

import pytestdef test_conf():print("測試conftest.py文件,即使這里沒有使用fixture也會調用!!")

conftest.py

import pytest@pytest.fixture(scope="function", autouse=True)
def function_fixture():print("\n>>>>>> function 范圍 fixture 開始 (每個測試方法執(zhí)行一次) >>>>>>")yieldprint("\n<<<<<< function 范圍 fixture 結束 (每個測試方法完成后執(zhí)行) <<<<<<")

目錄結構:
在這里插入圖片描述
運行結果:
在這里插入圖片描述
通常配合conftest.py用的還有鉤子hook函數(shù)。

三、總結

1、decorators裝飾器是一種函數(shù) ,它接受一個函數(shù)作為參數(shù),并返回一個新的函數(shù)或修改原來的函數(shù)。----個人理解裝飾器就是封裝好了一個函數(shù),然后采用"@函數(shù)名稱()"來注釋另一個函數(shù)以使用該裝飾器,達到某些目的。
2、fixture測試夾具,本質上是一個函數(shù),為測試提供可重用的環(huán)境支持。用@pytest.fixture()裝飾器將一個函數(shù)標記為pytest可識別的fixture夾具。
3、可以用conftest.py來管理共享的裝飾器。

http://m.aloenet.com.cn/news/1261.html

相關文章:

  • 營銷型外貿網站制作鄭州網絡推廣平臺有哪些
  • 網站pv統(tǒng)計方法電商seo與sem是什么
  • 怎做連接網站百度手機關鍵詞排名工具
  • 日本做暖網站泰安百度推廣公司
  • h5網站網站建設今天發(fā)生的重大新聞
  • 新華區(qū)設計網站公司短視頻培訓要多少學費
  • 廣州快速建站哪家服務專業(yè)百度搜圖片功能
  • http網站開發(fā)汨羅網站seo
  • 網站制作最便宜比較靠譜的推廣公司
  • 做logo的著名網站東莞網站關鍵詞優(yōu)化排名
  • 私自建立賭博網站判決書網絡推廣渠道和方式
  • 天津網站經營性備案seo描述快速排名
  • python數(shù)據(jù)分析做網站百度總部投訴電話
  • 網站內部鏈接有什么作用有什么平臺可以發(fā)廣告
  • 邢臺建網站找誰指數(shù)型基金
  • 深圳最新疫情防控信息亻seo關鍵詞優(yōu)化軟件
  • 如何做收機微網站seo排名優(yōu)化推廣報價
  • 做公司+網站建設價格低谷歌賬號注冊
  • 網易云外鏈wordpressseo服務商
  • 新手做市場分析的網站抖音信息流廣告怎么投放
  • 不用淘寶客api如何做網站網站制作 網站建設
  • 銀川做企業(yè)網站合肥seo報價
  • 重慶網站建設設計網絡營銷十大成功案例
  • 娛樂網站開發(fā)福州外包seo公司
  • 榮耀手機商城官方網站入口西安seo排名外包
  • 蘇州網站建設的一般流程職業(yè)技能培訓網
  • 哪家做網站靠譜企業(yè)營銷策劃
  • 福清網站建設百度收錄批量提交入口
  • 海門做網站自動優(yōu)化句子的軟件
  • 數(shù)據(jù)分析師簡歷襄陽網站推廣優(yōu)化技巧