使用 factory_boy 测试 django post
Test django post with factory_boy
我刚开始在测试中使用 Factory boy,效果很好。
我想测试 crud 视图,所以在某些时候,我需要 post 数据(在 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
有什么办法吗?或者我需要自己填写所有 post 数据?
(我没有测试表单本身或验证,只是 post 响应。
干杯
<User>
是一个 django 模型,不知道如何将自己表示为 JSON
。您需要使用 rest-framework
中的 ModelSerializer
或 django builtin serializing 功能的序列化程序:
tests.py
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
请注意,任何使用 django 测试客户端 的测试都会被大多数人视为 集成测试 。
这并不意味着它是一个糟糕的测试,我有很多测试和你的一样,但是它们是集成测试。
如果你想让它更像是一个单元测试,请尝试 here 中的 setup_view
。
我刚开始在测试中使用 Factory boy,效果很好。
我想测试 crud 视图,所以在某些时候,我需要 post 数据(在 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
有什么办法吗?或者我需要自己填写所有 post 数据?
(我没有测试表单本身或验证,只是 post 响应。
干杯
<User>
是一个 django 模型,不知道如何将自己表示为 JSON
。您需要使用 rest-framework
中的 ModelSerializer
或 django builtin serializing 功能的序列化程序:
tests.py
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
请注意,任何使用 django 测试客户端 的测试都会被大多数人视为 集成测试 。
这并不意味着它是一个糟糕的测试,我有很多测试和你的一样,但是它们是集成测试。
如果你想让它更像是一个单元测试,请尝试 here 中的 setup_view
。