0

How can I write a unit test to confirm that inserting an invalid record fails with SQLAlchemy/Postgres? I'm currently doing this:

session.add(invalid_record)
session.flush()
query = list(session.query(Article).filter_by(
                record_id=invalid_record.record_id,
            ))
assert len(query) == 0

But this fails when I try and add the invalid record (violating a Not Null constraint).

1 Answers1

1

You could use assertraises if you are using unittest, see this previous answer: https://stackoverflow.com/a/28223420/5982697

So something like:

with self.assertRaises(sqlalchemy.exc.IntegrityError):
    session.add(invalid_record)

Assuming it raises an sqlalchemy.exc.IntegrityError.

EDIT: capitalize the R

Heath
  • 128
  • 1
  • 9
  • 1
    Isn't it [`assertRaises`](https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertRaises) with a capital R? – Ilja Everilä Jun 27 '17 at 16:14