99 lines
2.1 KiB
Python
99 lines
2.1 KiB
Python
|
import py
|
||
|
|
||
|
def setup_module(mod):
|
||
|
py.magic.invoke(assertion=1)
|
||
|
|
||
|
def teardown_module(mod):
|
||
|
py.magic.revoke(assertion=1)
|
||
|
|
||
|
def f():
|
||
|
return 2
|
||
|
|
||
|
def test_assert():
|
||
|
try:
|
||
|
assert f() == 3
|
||
|
except AssertionError, e:
|
||
|
s = str(e)
|
||
|
assert s.startswith('assert 2 == 3\n')
|
||
|
|
||
|
def test_assert_with_explicit_message():
|
||
|
try:
|
||
|
assert f() == 3, "hello"
|
||
|
except AssertionError, e:
|
||
|
assert e.msg == 'hello'
|
||
|
|
||
|
def test_assert_within_finally():
|
||
|
class A:
|
||
|
def f():
|
||
|
pass
|
||
|
excinfo = py.test.raises(TypeError, """
|
||
|
try:
|
||
|
A().f()
|
||
|
finally:
|
||
|
i = 42
|
||
|
""")
|
||
|
s = excinfo.exconly()
|
||
|
assert s.find("takes no argument") != -1
|
||
|
|
||
|
#def g():
|
||
|
# A.f()
|
||
|
#excinfo = getexcinfo(TypeError, g)
|
||
|
#msg = getmsg(excinfo)
|
||
|
#assert msg.find("must be called with A") != -1
|
||
|
|
||
|
|
||
|
def test_assert_multiline_1():
|
||
|
try:
|
||
|
assert (f() ==
|
||
|
3)
|
||
|
except AssertionError, e:
|
||
|
s = str(e)
|
||
|
assert s.startswith('assert 2 == 3\n')
|
||
|
|
||
|
def test_assert_multiline_2():
|
||
|
try:
|
||
|
assert (f() == (4,
|
||
|
3)[-1])
|
||
|
except AssertionError, e:
|
||
|
s = str(e)
|
||
|
assert s.startswith('assert 2 ==')
|
||
|
|
||
|
def test_assert_non_string_message():
|
||
|
class A:
|
||
|
def __str__(self):
|
||
|
return "hello"
|
||
|
try:
|
||
|
assert 0 == 1, A()
|
||
|
except AssertionError, e:
|
||
|
assert e.msg == "hello"
|
||
|
|
||
|
|
||
|
# These tests should both fail, but should fail nicely...
|
||
|
class WeirdRepr:
|
||
|
def __repr__(self):
|
||
|
return '<WeirdRepr\nsecond line>'
|
||
|
|
||
|
def bug_test_assert_repr():
|
||
|
v = WeirdRepr()
|
||
|
try:
|
||
|
assert v == 1
|
||
|
except AssertionError, e:
|
||
|
assert e.msg.find('WeirdRepr') != -1
|
||
|
assert e.msg.find('second line') != -1
|
||
|
assert 0
|
||
|
|
||
|
def test_assert_non_string():
|
||
|
try:
|
||
|
assert 0, ['list']
|
||
|
except AssertionError, e:
|
||
|
assert e.msg.find("list") != -1
|
||
|
|
||
|
def test_assert_implicit_multiline():
|
||
|
try:
|
||
|
x = [1,2,3]
|
||
|
assert x != [1,
|
||
|
2, 3]
|
||
|
except AssertionError, e:
|
||
|
assert e.msg.find('assert [1, 2, 3] !=') != -1
|
||
|
|