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 モデルであり、それ自体を として表現する方法を知りませんJSONModelSerializerfromrest-frameworkまたはdjango 組み込みのシリアライズ機能のようなシリアライザを使用する必要があります: 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 テスト クライアントを使用したテストは統合テストと見なされることに注意してください。

これは、それが悪いテストであることを意味するものではありません。私はあなたのような多くのテストを持っていますが、それらは統合テストです。

これを単体テストにしたい場合は、 heresetup_viewから試してください。

于 2015-10-30T10:12:27.163 に答える