1

我刚开始在测试中使用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 了有什么办法吗?还是我需要自己填写所有帖子数据?(我没有测试表单本身或验证,只是发布响应。

干杯

4

1 回答 1

1

<User>是一个 django 模型,不知道如何将自己表示为JSON. 您需要使用类似ModelSerializerfrom的序列化程序rest-frameworkdjango 内置的序列化功能: 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 测试客户端的测试都会被大多数人视为集成测试

这并不意味着这是一个糟糕的测试,我有很多和你一样的测试,但是它们是集成测试。

如果您想让这更像是一个单元测试,请setup_view这里尝试。

于 2015-10-30T10:12:27.163 回答