You should check the actual effect of the code on the data and its compliance with validation rules, etc., and not just the exception exceptions - this will be a bit like a simple compilation of the procedure!
it complex database test code that performs inserts, updates, or deletes (DML) because the test changes the environment in which it runs, i.e. database. Performing the same procedure several times in a row can (and probably should) have different results each time. This is very different from unit testing of "clean code", which you can run thousands of times and always get the same result, that is, "clean code" is deterministic , the database code that runs DML is not.
For this reason, you often have to create a "framework" to support database module tests — that is, scripts to configure some test data in the correct state and to clear it after running the test.
Tony Andrews
source share