我刚刚开始在我的测试中使用Factory boy,而且效果很好。
我想测试crud视图,所以在某些时候,我需要发布数据(在json中)以进行创建和更新操作。
我希望我的测试内容类似于:
a = self.client.post(
my_url,
json.dumps(my_factory.stub()),
content_type="application/json")
assert a.status_code == 403
这显然不起作用。
我得<factory.containers.StubObject object at 0x7ffa34e375d0> is not JSON serializable
有没有办法做到这一点?或者我需要自己填写所有的帖子数据?
(我没有测试表单本身或验证,只是后期响应。
干杯
答案 0 :(得分:1)
<User>
是一个django模型,并不知道如何将自己表示为JSON
。您需要使用来自ModelSerializer
的{{1}}或django builtin serializing功能的序列化程序:
的 tests.py 强>
rest-framework
请注意,大多数使用 django测试客户端的任何测试都会被视为集成测试。
这并不意味着它是一个糟糕的测试,我有很多测试,就像你的测试一样,但它们是集成测试。
如果您希望更多地进行单元测试,请尝试here中的from django.core import serializers
data = serializers.serialize('json', my_factory.stub(), fields=('id'))
a = self.client.post(
my_url,data,
content_type="application/json")
assert a.status_code == 403
。