您好我正在为我的模型实施测试用例。 我使用的是Mongoengine0.9.0 + Django 1.8
我的models.py
class Project(Document):
# commented waiting for org-group to get finalize
project_name = StringField()
org_group = ListField(ReferenceField(OrganizationGroup, required=False))
My Serializers.py
class ProjectSerializer(DocumentSerializer):
class Meta:
model = Project
depth = 1
test.py文件
def setUp(self):
# Every test needs access to the request factory.
self.factory = RequestFactory()
self.user = User.objects.create_user(
username='jacob', email='jacob@jacob.com', password='top_secret')
def test_post_put_project(self):
"""
Ensure we can create new clients in mongo database.
"""
org_group = str((test_utility.create_organization_group(self)).id)
url = '/project-management/project/'
data = {
"project_name": "googer",
"org_group": [org_group],
}
##import pdb; pdb.set_trace()
factory = APIRequestFactory()
user = User.objects.get(username='jacob')
view = views.ProjectList.as_view()
# Make an authenticated request to the view...
request = factory.post(url, data=data,)
force_authenticate(request, user=user)
response = view(request)
self.assertEqual(response.status_code, 200)
当我运行测试用例时,我收到此错误
(Only lists and tuples may be used in a list field: ['org_group'])
完整的堆栈跟踪
ValidationError:调用ValidationError
时获得Project.objects.create()
。
这可能是因为请求数据满足串行器验证但不满足Mongoengine的要求。
您可能需要检查Project和ProjectSerializer之间的一致性。
如果不是这种情况,请在https://github.com/umutbozkurt/django-rest-framework-mongoengine/issues
上打开有关此问题的故障单原因是:ValidationError(项目:无)(列表字段中只能使用列表和元组:['org_group'])
不知道为什么我们不能传递这样的对象。
当我作为对同一方法的请求发布时,同样的事情它对我有用但测试用例失败
答案 0 :(得分:1)
测试应该使用multipart/form-data
运行,这意味着它们不支持列表或嵌套数据。
你可以override this with the format
argument,我猜你可能想要设置为json
。很可能你的前端使用的是JSON,或者是支持列表的解析器,这解释了为什么你没有看到这个。