我在一个测试模块中有一个助手类,它有一个类级成员,我在其中缓存已经创建的类成员(在夹具中组成的数据库配置的 sql 转储,这样我就不必再次派生数据多次测试)。
开始:
class SqlDump:
FIXUP = re.compile(r"^(\s*CREATE SEQUENCE[^;]*)AS INTEGER([^;]*);",
flags=re.MULTILINE | re.IGNORECASE | re.DOTALL)
PATH = os.path.join(os.path.dirname(__file__), 'test_data/sql_dumps/{script}.sql')
all = {}
def __init__(self, script):
self.__class__.all[script] = self
self.script = script
self.content = self.load()
如果我在这个成员的初始化上放置一个断点,all在 pytest 之外使用它,它只会被初始化一次。
但是当我运行 pytest 时,初始化成员的行会执行两次。这会导致一些值丢失。
是否有任何理由应该将类级成员初始化两次?为什么 pytest 这样做?