簡體   English   中英

在 Pytest 上的測試之間更新和共享變量

[英]Update and share variable between tests on Pytest

所以,我正在運行一些測試,每個測試都會創建一個變量(鍵),例如:

def test_123():
    key = 'abc'
    ....
    ---- test_123 PASSED! ----

def test_456():
    key = 'def'
    ....
    ---- test_456 FAILED! ----

我還有另一個測試,最后要執行,目的是驗證這些密鑰。 但它應該只驗證測試通過的密鑰。

def check_keys():
    # keys = ['abc']
    for key in keys:
    ....

由於此驗證花費的時間太長,最好一次檢查所有這些密鑰,而不是在每次測試中

因此,我計划創建一個列表,該列表應該是這些測試之間的全局變量,並在給定的測試通過時使用正確的鍵增加它。

最后一個測試應該通過這個列表並檢查通過的測試的鍵。

我已經閱讀了 pytest hooks 和 pytest cache,但我發現的例子太復雜了:(

有人可以幫助我嗎? 謝謝!

您可以在conftest.py執行此conftest.py並具有適當范圍的夾具。 請參閱此文檔。

假設模塊范圍(基本上是文件中的所有函數),它可能看起來像這個例子:

conftest.py 文件

import pytest

@pytest.fixture(scope='module')
def myfixture():
    keys = []
    yield keys

mytests.py

def test_myex1(myfixture):
    myfixture.append(1)
    assert True

def test_myex2(myfixture):
    myfixture.append(2)
    assert True

def test_myex3(myfixture):
    print(myfixture)
    if len(myfixture) == 2:
        assert True
    else:
        assert False

測試 3 將通過,因為第一個測試會將密鑰附加到myfixture 請小心,因為測試 3 在此設置中無法獨立通過。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM