Having each query in its own test function is good for isolating different error cases, because each test gives up on its first failure.
But it is bad from the perspective of taking a long time to run. One compromise is to add some of the more complex cases into the same test function as simpler cases -- if the simple cases fail, the more complex cases are not likely to succeed -- or maybe we don't care right away whether they succeed until we diagnose and fix the simple case? Similarly, if the positive cases don't pass, we might not care whether the negative cases properly fail, so they can be bundled into the same test functions.