【发布时间】:2016-08-27 10:29:43
【问题描述】:
我正在尝试学习测试序列化程序的最佳方法,但遇到了一些问题。在下面的示例中,我正在测试创建新用户是否正常工作。即可以散列密码。我得到的错误是:
TypeError: create() 缺少 1 个必需的位置参数: '验证数据'
我不太确定我需要作为validated_data 传递什么
序列化器.py
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ('url', 'username', 'email', 'password')
extra_kwargs = {
'url': {'view_name': 'user-detail'},
'password': {'write_only': True}
}
def create(self, validated_data):
user = User.objects.create_user(
username=validated_data['username'],
email=validated_data['email'])
user.set_password(validated_data['password'])
user.save()
return user
def update(self, instance, validated_data):
user = User.objects.get(id=instance.id)
user.set_password(validated_data['password'])
user.save()
return user
tests.py
class UserSerializerTest(APITestCase):
def setUp(self):
factory = APIRequestFactory()
request = factory.get(path=reverse('user-list'))
self.serializer_context = {
'request': Request(request),
}
def test_create_user(self):
from .serializers import UserSerializer
data = {'username': 'temp_usr', 'email': 'temp@email.com',
'password': 'temp_pass'}
user = UserSerializer(data=data, context=self.serializer_context).create()
【问题讨论】:
-
因为方法定义需要它:)。您测试序列化程序本身而不是整个创建视图是否有特定原因?
标签: python django django-rest-framework