1. ホーム
  2. python

django でユーザとリクエストをモックする方法

2023-09-12 21:41:01

質問

リクエストオブジェクトやユーザーオブジェクトと対話する django コードがあります。例えば、以下のようなものです。

foo_model_instance = models.get_or_create_foo_from_user(request.user)

django python shell や unittest でテストする場合、何を渡しますか?ここでは単に User オブジェクトで十分ですが、モックリクエストオブジェクトの必要性も頻繁に出てきます。

シェルやunittestのために。

  • どのようにユーザーをモックするのですか?
  • どのようにリクエストをモックするのですか?

どのように解決するのですか?

リクエストのために、私なら リクエストファクトリー を使います。

from django.test.client import RequestFactory
rf = RequestFactory()
get_request = rf.get('/hello/')
post_request = rf.post('/submit/', {'foo': 'bar'})

ユーザーについては、@ozan が提案したように django.contrib.auth.models.User を使用し、おそらくは ファクトリーボーイ を使うかもしれません (factory boy では DB に保存しないことを選択できます)。