Junit4 @expect in Python

เวลาจะ 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 จริงๆ เจ๊ง -_-!.

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s