PyTest: Patch eine globale Variable

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: PyTest: Patch eine globale Variable

by Anonymous » 24 Jul 2025, 11:09

Wie können Sie eine Variable mit Mock oder PyTest-Mock pflücken? Angenommen, die Variable ist in einem anderen Python -Skript definiert und von vielen anderen Skripten verwendet. Ich möchte es innerhalb von pyTest_cmdline_main verspotten, damit alle Skripte, die diese Variable verwenden, entsprechend verspottet werden.

Code: Select all

VAR = "something"
< / Code>
 in Constest.py < / h1>
import os
import sys
from unittest.mock import patch

TEST_DIR = os.path.dirname(os.path.realpath(__file__))

class MockThings():
def __init__(self):
self.setup()

def setup(self):
mock_var = patch('env.VAR').start()
mock_var.return_value = "updated"

def pytest_cmdline_main(config):
sys.path.append(TEST_DIR)
MockThings()
< /code>
 In test_Something.py < /h1>
from env import VAR

def test_sample():
print(VAR)
# do something else here
assert False

def test_sample2():
print(VAR)
# do something else here
assert False
Wenn Sie PyTest -v
Ausführen des Tests wie erwartet fehlschlagen, aber unter dem Stdout heißt es:
dann ist der druck out korrekt (

Code: Select all

updated
).
Wie verspottete ich diese Variable und behandle sie nicht als Funktion? Ich weiß>

Top