Python 2.6.5を実行しているので、unittest2
モジュールを使用します。これは、2.7および3.Xのunittestモジュールの将来のポートです。私は次の統合テストを実行しています。
def test_hits_constraint_raise(self):
obj = Table1(...)
self.sess.add(obj)
self.sess.flush()
# assert condition raises
self.assertFailure(IntegrityError, sess.add, obj)
代わりに、エラーが発生します。
======================================================================
ERROR: test_hits_constraint_raise (__main__.TestModels)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test_models.py", line 76, in test4_create_exercise_same_id_constraint_raise
self.sess.flush()
File "build/bdist.linux-i686/egg/sqlalchemy/orm/scoping.py", line 114, in do
return getattr(self.registry(), name)(*args, **kwargs)
.........
File "build/bdist.linux-i686/egg/sqlalchemy/engine/default.py", line 331, in do_execute
cursor.execute(statement, parameters)
IntegrityError: (IntegrityError) column exercise_id is not unique u'INSERT INTO TABLE1 (attribute1_name, attribute2_name) VALUES (?, ?)' ('value1', 'value2')
----------------------------------------------------------------------
Ran 4 tests in 0.531s
FAILED (errors=1)
行う唯一の方法は使用すること@unittest2.expectedFailure
ですか?それはうまくいくでしょう。しかし、どのようなエラーが発生したのかを正確に知りたいのです。
----------------------------------------------------------------------
Ran 4 tests in 0.513s
OK (expected failures=1)