私は単体テストに非常に慣れておらず、おそらく何か間違ったことをしていますが、投稿をシミュレートして管理バックエンド経由でモデルを更新するとsave_model
、AdminForm のメソッドが呼び出されていないようです。このメソッドをテストしようとしています - 何が間違っていますか?
あまり関係のない 2 番目の質問は、一般に、単体テストを使用するときにメソッドが呼び出されていることを確認するにはどうすればよいですか? ヒットしたすべてのメソッドを一覧表示する方法はありますか?
以下は、私のテストが実行されているコードです。このsave_model
モデルの AdminForm のメソッドで、このモデルのfoobar
属性を現在サインインしているユーザーのユーザー名に設定しました。以下は私のテストです:
self.client = Client()
self.client.login(username='username',password='password')
# self.dict is a dictionary of field names and values for mymodel to be updated
response = self.client.post('/admin/myapp/mymodel/%d/' % self.mymodel.id, self.dict)
self.assertEqual(response.status_code,200) # passes
self.assertEqual(self.mymodel.foobar,'username') # fails
self.client.logout()
それself.mymodel.foobar
は空の文字列であると言うので失敗します。アップデート前はこうあるべきだった。foobar の値は渡されませんself.dict
が、私のsave_model
メソッドは、更新が発生したときにそれを独自に設定するように設計されています。また、コードが正しく動作し、正常に動作しているように見えることも注目に値しますがsave_model
、テストが失敗しているだけです。私はTDDの完全な初心者なので、問題はコードではなくテストにあると確信しています。考え?