sqlalchemy コードを単体テストしようとしています。
def add_user(*user_details):
try:
u = User(*user_details)
session.add(u)
session.commit()
except:
session.rollback()
今私の単体テストで:
def testDuplicate(self):
add_user(user_detail1,user_detail2)
self.assertRaises(IntegrityError, add_user(user_detail1,user_detail2))
add_user 関数呼び出しで整合性エラーが発生した場合、このテストは成功し、例外がない場合は失敗します。しかし問題は、両方のケースでテストが成功することです。
なぜこうなった?私のコードに何か問題がありますか? または assertRaises は、私が期待しているものとは異なる動作をしますか?
最初は、try 句に except を入れており、例外はそこでのみ処理され、assertRaises は例外を取得しないため、これが起こっていると思いました。しかし、これが事実である場合、assertRaises は例外を受け取らずに失敗するはずです。
単体テストの書き方に問題がある場合は、教えてください。コーディングの習慣に単体テストを組み込むことをまだ学んでいるからです。