我正在尝试学习测试序列化器的最佳方法,但遇到了一些问题。在下面的示例中,我正在测试创建新用户是否正常工作。即可以对密码进行哈希处理。我收到的错误是:
TypeError: create() missing 1 required positional argument: 'validated_data'
我不太确定我需要传递什么作为 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
测试.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()
最佳答案
您在测试中调用了create
。您应该调用 is_valid
,然后保存
。
user = UserSerializer(data=data, context=self.serializer_context)
user.is_valid(raise_exception=True)
user.save()
关于python - 测试模型序列化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39180100/