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
。