pytest 在测试之间泄漏 attrs 对象



我正在尝试使用 attr 类的两个不同实例(从函数范围的装置返回(作为输入参数在 pytest 中运行两个测试。第一个 msg 对象也显示在第二个测试中。我的例子:

import attr
import pytest
import uuid
@attr.s
class Receiver:
internal_dict = attr.ib(default=dict())
def send_message(self, msg):
self.internal_dict[msg] = msg
@pytest.fixture
def msg():
yield uuid.uuid1()
@pytest.fixture
def receiver():
yield Receiver()
def test_send_msg_1(msg, receiver):
receiver.send_message(msg)
assert len(receiver.internal_dict) == 1
def test_send_msg_2(msg, receiver):
receiver.send_message(msg)
print("internal_dict:{}".format(receiver.internal_dict))
assert len(receiver.internal_dict) == 1  # FAILS

两个测试之间的可变状态如何泄漏?

此代码与可变默认值共享相同的dict()实例:

@attr.s
class Receiver:
internal_dict = attr.ib(default=dict())

考虑改用工厂:

@attr.s
class Receiver:
internal_dict = attr.ib(factory=dict)

最新更新