PyTest -Spiel ändert die Instanz, die von einem anderen Spiel zurückgegeben wirdPython

Python-Programme
Anonymous
 PyTest -Spiel ändert die Instanz, die von einem anderen Spiel zurückgegeben wird

Post by Anonymous »

Ich bin sehr verblüfft und ist ein wenig besorgt, um das folgende Verhalten zu entdecken, bei dem ich zwei Tests und zwei Vorrichtungen habe.

Code: Select all

import pytest

@pytest.fixture
def new_object():
return list()

@pytest.fixture
def a_string(new_object):
# Change this instance of the object
new_object.append(1)
return "a string"

def test_1(new_object):
assert len(new_object) == 0

def test_2(a_string, new_object):
assert len(new_object) == 0

< /code>
Der erste Test geht jedoch durch, aber der zweite fällt fehl.    def test_2(a_string, new_object):
>       assert len(new_object) == 0
E       assert 1 == 0
E        +  where 1 = len([1])

tests/test_pytest_list.py:21: AssertionError
================================================ short test summary info =================================================
FAILED tests/test_pytest_list.py::test_2 - assert 1 == 0
============================================== 1 failed, 1 passed in 0.36s ===============================================
< /code>
Ich erwartete, dass Feorturen neue Instanzen eines Objekts übergeben würden (sofern nicht anders angegeben), nicht das gleiche Objekt, das eine andere Fixture geändert hat. />  qualifiziert sich ein anderes Gerät nicht als Funktion? class = "Lang-Py PrettyPrint-Override">@pytest.fixture
def new_object():
"""I want to test instances of this class"""
return list()

@pytest.fixture
def case_1(new_object):
new_object.append(1)
return new_object

@pytest.fixture
def case_2(new_object):
new_object.append(2)
return new_object

def test_cases(case_1, case_2):
assert sum(case_1) + sum(case_2) == 3  # fails: assert (3 + 3) == 3

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post