ward
ward copied to clipboard
AssertionError being raised instead of showing "Difference (LHS vs RHS)"
from ward import test
def assert_something(l, v):
assert l == v
@test("test", tags=["test"])
def _() -> None:
assert_something(1, 2)
Compare the result of this:
with what happens if the assert is in the main body:
How do I make it print the proper output normally? For large tests it becomes a mess to figure out what's wrong unless I assign a million variables in each function in order to inspect the locals. I checked the documentation and found no mention of reusing assertions like this.
From a quick view it looks like ward
will modify assert
statements into its own assert functions from ward.expect
. However this probably only happens inside functions decorated with @test
.
You can use these assertion functions directly. Your example would then become
from ward import test
from ward.expect import assert_equal
def assert_something(l, v):
assert_equal(l,v, "") # must have a msg
@test("test", tags=["test"])
def _() -> None:
assert_something(1, 2)
Unfortunately these assert_ functions are not good enough. For one, they don't show the full traceback. Try putting the function assert_something
in another file and importing it, and you'll see that the test will then only print the code for the current file on failures (the _()
function, not any individual assert failing inside assert_something), which is pretty much useless if you're doing any serious testing.