我正在使用APITestCase
在django restframework中测试我的Serializer模型。
这是我的结构:
class Usertest(APITestCase):
def test_userprofile_create(self):
user = User.objects.create(username='asghar',
password='4411652A',
email='ww@gmail.com',)
profile = UserProfile.objects.create(fullname='asghariiiiii',
phonenumber='9121345432',
address='bella',
user=user)
user.user_profile = profile
client = APIClient()
request = client.get('/user/create/')
data = UserCreateSerializer(user,
context={'request': request}).data
url = reverse('user-create')
response_create =client.post(url, data)
在我的视图中权限设置为AllowAny
。
无需登录或强制验证。
data = UserCreateSerializer(user,context = {' request':request})。data AttributeError:' HttpResponseNotFound'对象没有属性' build_absolute_uri'
正如您所看到的,错误来自于创建data
。我首先尝试删除context
,但此标题出现错误:
AssertionError:
HyperlinkedIdentityField
需要序列化程序上下文中的请求。在实例化序列化程序时添加context={'request': request}
。
答案 0 :(得分:0)
request = client.get(' / user / create /')
这会返回响应,而不是请求。您应该可以使用APIRequestFactory
:
from rest_framework.test import APIRequestFactory
# Using the standard RequestFactory API to create a form POST request
factory = APIRequestFactory()
request = factory.post('/user/create/', {})
data = UserCreateSerializer(user,
context={'request': request}).data
答案 1 :(得分:0)
REST_FRAMEWORK请求没有方法build_absolute_uri
return request.build_absolute_uri(url)
AttributeError: 'function' object has no attribute 'build_absolute_uri'
DRF请求和Django HTTP请求不一样。