我正在尝试使用factory_boy测试我的mongoengine数据库操作。以下是mongoengine文档:
import mongoengine
class Address(mongoengine.EmbeddedDocument):
street = mongoengine.StringField()
class Person(mongoengine.Document):
name = mongoengine.StringField()
address = mongoengine.EmbeddedDocumentField(Address)
然后我定义工厂类:
class AddressFactory(factory.mongoengine.MongoEngineFactory):
class Meta:
model = Address
street = factory.Sequence(lambda n: 'street%d' % n)
class PersonFactory(factory.mongoengine.MongoEngineFactory):
class Meta:
model = Person
name = factory.Sequence(lambda n: 'name%d' % n)
address = factory.SubFactory(AddressFactory)
在我尝试在测试中使用它们之后
import unittest
class TestPerson(unittest.TestCase):
def test_person_creation(self):
person = PersonFactory.create()
assert models.Plan.objects.get(address=plan.address).first()
…并获得以下异常,在我看来,如果我没有在工厂类的meta.model部分定义文档的类,但我定义了,则会出现这种异常。我猜我用错了create()方法,只是不知道该怎么做
Traceback (most recent call last):
File "/home/anton/drill_ws/src/drill-hal/tests/test_store.py", line 76, in <module>
person = PersonFactory.create()
File "/home/anton/.local/share/virtualenvs/drill-hal-TAWOMXlQ/lib/python3.7/site-packages/factory/base.py", line 564, in create
return cls._generate(enums.CREATE_STRATEGY, kwargs)
File "/home/anton/.local/share/virtualenvs/drill-hal-TAWOMXlQ/lib/python3.7/site-packages/factory/base.py", line 501, in _generate
return step.build()
File "/home/anton/.local/share/virtualenvs/drill-hal-TAWOMXlQ/lib/python3.7/site-packages/factory/builder.py", line 272, in build
step.resolve(pre)
File "/home/anton/.local/share/virtualenvs/drill-hal-TAWOMXlQ/lib/python3.7/site-packages/factory/builder.py", line 221, in resolve
self.attributes[field_name] = getattr(self.stub, field_name)
File "/home/anton/.local/share/virtualenvs/drill-hal-TAWOMXlQ/lib/python3.7/site-packages/factory/builder.py", line 375, in __getattr__
extra=context,
File "/home/anton/.local/share/virtualenvs/drill-hal-TAWOMXlQ/lib/python3.7/site-packages/factory/declarations.py", line 321, in evaluate
return self.generate(step, defaults)
File "/home/anton/.local/share/virtualenvs/drill-hal-TAWOMXlQ/lib/python3.7/site-packages/factory/declarations.py", line 411, in generate
return step.recurse(subfactory, params, force_sequence=force_sequence)
File "/home/anton/.local/share/virtualenvs/drill-hal-TAWOMXlQ/lib/python3.7/site-packages/factory/builder.py", line 233, in recurse
return builder.build(parent_step=self, force_sequence=force_sequence)
File "/home/anton/.local/share/virtualenvs/drill-hal-TAWOMXlQ/lib/python3.7/site-packages/factory/builder.py", line 272, in build
step.resolve(pre)
File "/home/anton/.local/share/virtualenvs/drill-hal-TAWOMXlQ/lib/python3.7/site-packages/factory/builder.py", line 221, in resolve
self.attributes[field_name] = getattr(self.stub, field_name)
File "/home/anton/.local/share/virtualenvs/drill-hal-TAWOMXlQ/lib/python3.7/site-packages/factory/builder.py", line 375, in __getattr__
extra=context,
File "/home/anton/.local/share/virtualenvs/drill-hal-TAWOMXlQ/lib/python3.7/site-packages/factory/declarations.py", line 321, in evaluate
return self.generate(step, defaults)
File "/home/anton/.local/share/virtualenvs/drill-hal-TAWOMXlQ/lib/python3.7/site-packages/factory/declarations.py", line 411, in generate
return step.recurse(subfactory, params, force_sequence=force_sequence)
File "/home/anton/.local/share/virtualenvs/drill-hal-TAWOMXlQ/lib/python3.7/site-packages/factory/builder.py", line 233, in recurse
return builder.build(parent_step=self, force_sequence=force_sequence)
File "/home/anton/.local/share/virtualenvs/drill-hal-TAWOMXlQ/lib/python3.7/site-packages/factory/builder.py", line 279, in build
kwargs=kwargs,
File "/home/anton/.local/share/virtualenvs/drill-hal-TAWOMXlQ/lib/python3.7/site-packages/factory/base.py", line 315, in instantiate
return self.factory._create(model, *args, **kwargs)
File "/home/anton/.local/share/virtualenvs/drill-hal-TAWOMXlQ/lib/python3.7/site-packages/factory/mongoengine.py", line 26, in _create
instance = model_class(*args, **kwargs)
TypeError: 'NoneType' object is not callable
目前没有回答
相关问题 更多 >
编程相关推荐