Python 调用生成器对象将返回错误';类型错误:';dict';对象不可调用';

Python 调用生成器对象将返回错误';类型错误:';dict';对象不可调用';,python,pytest,Python,Pytest,我有一个Generate函数,用于生成一些用户数据。然后将其传递给pytest夹具,以便在测试用例中使用 然而,当我尝试运行它时。我收到TypeError:“dict”对象不可调用 我调用的函数返回字典,而不是字典本身。为什么我会收到这个错误 Generate.py: class Generate(object): def __init__(self): fake = Faker() self.user = { "Username

我有一个
Generate
函数,用于生成一些用户数据。然后将其传递给pytest夹具,以便在测试用例中使用

然而,当我尝试运行它时。我收到
TypeError:“dict”对象不可调用

我调用的函数返回字典,而不是字典本身。为什么我会收到这个错误

Generate.py

class Generate(object):
    def __init__(self):
        fake = Faker()

        self.user = {
            "Username": fake.name().split(' ', 1)[0],
            "Email Address": fake.email(),
            "Password": fake.word(),
            "Todo": fake.word()
        }

    def user(self):
        new_user = self.user
        return new_user
@pytest.fixture
def user():
    generator = Generate()
    user = generator.user()
    yield user
conftest.py

class Generate(object):
    def __init__(self):
        fake = Faker()

        self.user = {
            "Username": fake.name().split(' ', 1)[0],
            "Email Address": fake.email(),
            "Password": fake.word(),
            "Todo": fake.word()
        }

    def user(self):
        new_user = self.user
        return new_user
@pytest.fixture
def user():
    generator = Generate()
    user = generator.user()
    yield user

编写
generator.user
时,您正在引用类的
user
属性(您使用
self.user=…
定义了该属性)。这确实是一本字典。这将隐藏您也称为
user
的方法。您可能应该重命名其中一个,例如:

def GetUser(self):
新用户=self.user
返回新用户
注意:此处定义的
user()
函数将始终返回相同的可变对象。我假设
new\u user=self.user
行是为了复制?如果是这样,您需要调用
.copy
方法,或者使用
copy.copy