欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

pytest解讀一次請(qǐng)求多個(gè)fixtures及多次請(qǐng)求

 更新時(shí)間:2022年06月01日 14:11:52   作者:把蘋(píng)果咬哭的測(cè)試筆記  
這篇文章主要為大家介紹了一次請(qǐng)求多個(gè)fixtures,以及fixtures被多次請(qǐng)求的pytest官方解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

跟著節(jié)奏繼續(xù)來(lái)探索fixtures的靈活性。

一、一個(gè)測(cè)試函數(shù)/fixture一次請(qǐng)求多個(gè)fixture

在測(cè)試函數(shù)和fixture函數(shù)中,每一次并不局限于請(qǐng)求一個(gè)fixture。他們想要多少就可以要多少。

下面是另一個(gè)簡(jiǎn)單的例子:

import pytest
# Arrange
@pytest.fixture
def first_entry():
    return "a"
# Arrange
@pytest.fixture
def second_entry():
    return 2
# Arrange
@pytest.fixture
def order(first_entry, second_entry):
    # 這是一個(gè)fixture函數(shù),請(qǐng)求了2個(gè)其他的fixture函數(shù)
    return [first_entry, second_entry]
# Arrange
@pytest.fixture
def expected_list():
    return ["a", 2, 3.0]
def test_string(order, expected_list):
    # 這是一個(gè)測(cè)試函數(shù),請(qǐng)求了2個(gè)不同的fixture函數(shù)
    # Act
    order.append(3.0)
    # Assert
    assert order == expected_list

可以看出,在fixture函數(shù)order中,請(qǐng)求了2個(gè)其他的fixture函數(shù),分別是:first_entry、second_entry。

在測(cè)試函數(shù)test_string中,請(qǐng)求了2個(gè)不同的fixture函數(shù),分別是:order、expected_list。

二、每個(gè)測(cè)試函數(shù)可以多次請(qǐng)求fixtures(返回值被緩存)

在同一個(gè)測(cè)試函數(shù)中,fixture也可以被請(qǐng)求多次。但是在這個(gè)測(cè)試函數(shù)中,pytest在第一次執(zhí)行fixture函數(shù)之后,不會(huì)再次執(zhí)行它們。

如果第一次執(zhí)行fixture函數(shù)有返回值,那么返回值會(huì)被緩存起來(lái)。

import pytest
# Arrange
@pytest.fixture
def first_entry():
    return "a"
# Arrange
@pytest.fixture
def order():
    return []
# Act
@pytest.fixture
def append_first(order, first_entry):
    # 在這里order第一次被請(qǐng)求,返回一個(gè)列表[]
    # 接著,order空列表增加了first_entry的返回值,此時(shí)的order變成了["a"],被緩存起來(lái)
    return order.append(first_entry)
def test_string_only(append_first, order, first_entry):
    # 在測(cè)試函數(shù)里,order第二次被請(qǐng)求,但是并不會(huì)拿到空列表[],而且拿到了被緩存起來(lái)的["a"]
    # 所以斷言order == [first_entry],其實(shí)就是 ["a"] == ["a"],測(cè)試通過(guò)
    # Assert
    assert order == [first_entry]

從示例中可以看出:

  • 在fixture函數(shù)append_first中,order第一次被請(qǐng)求,返回一個(gè)列表[],被緩存起來(lái)。
  • 接著,order.append(first_entry)在[]中增加了first_entry的返回值,所以,此時(shí)的order變成了["a"]。
  • 最后,在測(cè)試函數(shù)test_string_only中,order第二次被請(qǐng)求,但是并不會(huì)拿到空列表[],而且拿到了被緩存起來(lái)的["a"]。這樣的話,最后的斷言assert order == [first_entry]就會(huì)成功。

反過(guò)來(lái),如果同一個(gè)fixture在一個(gè)測(cè)試函數(shù)中每次都去請(qǐng)求一次,那上面的測(cè)試函數(shù)必然失敗。

因?yàn)?,這樣一來(lái),雖然在append_first中的返回值仍然是["a"],但是在test_string_only中,又去重新請(qǐng)求了一次order,拿到的其實(shí)是空列表[],所以最后斷言會(huì)失敗。

以上就是pytest解讀一次請(qǐng)求多個(gè)fixtures及多次請(qǐng)求 的詳細(xì)內(nèi)容,更多關(guān)于pytest解讀fixtures請(qǐng)求 的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 解決Django刪除migrations文件夾中的文件后出現(xiàn)的異常問(wèn)題

    解決Django刪除migrations文件夾中的文件后出現(xiàn)的異常問(wèn)題

    今天小編就為大家分享一篇解決Django刪除migrations文件夾中的文件后出現(xiàn)的異常問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • 如何使用Typora+MinIO+Python代碼打造舒適協(xié)作環(huán)境

    如何使用Typora+MinIO+Python代碼打造舒適協(xié)作環(huán)境

    這篇文章主要介紹了如何使用Typora+MinIO+Python代碼打造舒適協(xié)作環(huán)境,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • PyCharm軟件無(wú)法安裝lxml庫(kù)的問(wèn)題及解決

    PyCharm軟件無(wú)法安裝lxml庫(kù)的問(wèn)題及解決

    這篇文章主要介紹了PyCharm軟件無(wú)法安裝lxml庫(kù)的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 利用Python多處理庫(kù)處理3D數(shù)據(jù)詳解

    利用Python多處理庫(kù)處理3D數(shù)據(jù)詳解

    本文將介紹處理大量數(shù)據(jù)時(shí)非常方便的工具,例如tqdm與 multiprocessing?imap??一起使用、并行處理檔案、繪制和處理3D數(shù)據(jù)等,感興趣的小伙伴可以了解一下
    2021-12-12
  • Python與MongoDB交互的代碼實(shí)現(xiàn)

    Python與MongoDB交互的代碼實(shí)現(xiàn)

    Python與MongoDB的交互通常通過(guò)pymongo庫(kù)來(lái)實(shí)現(xiàn),pymongo是一個(gè)官方的Python驅(qū)動(dòng)程序,用于與MongoDB數(shù)據(jù)庫(kù)進(jìn)行交互,以下是一個(gè)簡(jiǎn)單的示例,具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-10-10
  • python散點(diǎn)圖雙軸設(shè)置坐標(biāo)軸刻度的實(shí)現(xiàn)

    python散點(diǎn)圖雙軸設(shè)置坐標(biāo)軸刻度的實(shí)現(xiàn)

    散點(diǎn)圖是一種常用的圖表類(lèi)型,可以用來(lái)展示兩個(gè)變量之間的關(guān)系,本文主要介紹了python散點(diǎn)圖雙軸設(shè)置坐標(biāo)軸刻度的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • python BytesIO 中 read 用法示例詳解

    python BytesIO 中 read 用法示例詳解

    這篇文章主要介紹了python BytesIO 中 read 用法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • 利用Python pyecharts繪制餅圖

    利用Python pyecharts繪制餅圖

    這篇文章主要介紹了利用Python pyecharts繪制餅圖,餅圖主要用于表現(xiàn)不同類(lèi)目的數(shù)據(jù)在總和中的占比。每個(gè)的弧度不是數(shù)據(jù)量的占比,下面我們一起進(jìn)入文章看看具體的實(shí)現(xiàn)過(guò)程吧,需要的朋友也可以參考一下
    2021-12-12
  • Python requests庫(kù)用法實(shí)例詳解

    Python requests庫(kù)用法實(shí)例詳解

    這篇文章主要介紹了Python requests庫(kù)用法,結(jié)合實(shí)例形式分析了Request庫(kù)的功能、安裝、請(qǐng)求創(chuàng)建、響應(yīng)等相關(guān)操作技巧,需要的朋友可以參考下
    2018-08-08
  • Python生成隨機(jī)數(shù)的方法詳解(最全)

    Python生成隨機(jī)數(shù)的方法詳解(最全)

    Python生成隨機(jī)數(shù)的方法有很多,譬如random模塊、NumPy庫(kù)、secrets模塊等。本文為大家整理了五個(gè)生成隨機(jī)數(shù)的方法(應(yīng)該是最全的了吧),希望對(duì)大家有所幫助
    2023-02-02

最新評(píng)論