I have following code in Python where based on a boolean flag I need to check a list count, wondering if there is a better way to code this in Python?
If var_true: if len(something) > 0: logger.console (“Something found”) else: raise AssertionError(“something was not found”) If not var_true: if len(something) == 0: logger.console (“Something not expected to be found, was not seen”) else: raise AssertionError(“something unexpected was found”)
else: raise AssertionError code with the actual
assert statement (which lets it get skipped when run in
-O mode, but behaves identically to your current code in normal [debug] mode):
if var_true: assert something, "something was not found" # Also remove len checks; sequences are naturally truthy when non-empty logger.console("Something found") else: assert not something, "something unexpected was found" # Same length check removal logger.console ("Something not expected to be found, was not seen")
During testing (or all the time, your choice if you never run with
-O) you’ll be told if your assumption is violated. In release mode, you’ll skip the tests that should never be hit and run a little faster.
If this is not a case where the
assert case should never occur unless a developer made a mistake, you shouldn’t use
AssertionError (both of which imply an "impossible" thing has occurred), and should instead raise some other appropriate exception, e.g.
ValueError for when an invalid value was supplied.