เวลาจะ test ว่าอยากให้ function ที่เราเรียนมัน raise exception ตามที่เราต้องการหรือเปล่า ถ้าเป็น JUnit เราก็ใส่อะไรประมาณข้างล่างได้ (แค่ประมาณอาจจะเขียนไม่ถูก)
@expect(IOException)
void testFoo() {
….
}
แต่ว่าพอมาเป็น Python จะทำอย่างไร จากคำแนะนำจากคุณสุกรีที่ codenone ก็ได้แบบนี้ออกมา
def expect(expr):
def decorator(f):
def wrapper(*__args, **__kw):
try:
f()
assert False
except Exception, (e):
assert type(e) != type(expr)
return wrapper
return decorator
@expect(RuntimeError)
def func1():
raise Exception
func1()
เขียนแยกๆ ดิบดี พอเอาไปใช้กับ nose จริงๆ เจ๊ง -_-!.