2012-10-08 32 views
12

Tiêu đề khá nhiều tiền nó lên: Tôi cố gắng sử dụng assertEqual để kiểm tra một hàm trả về một đối tượng phát điện, nhưng có kết quả trong:Đơn vị thử nghiệm một hàm trả về một đối tượng phát

AssertionError: generator object genexpr> at 0x2e70c80> != (1,2,...)

Có cách thông minh để làm điều này khác hơn là lặp qua chức năng và chạy assertEqual cho mỗi đầu ra riêng lẻ?

Trả lời

15
assertEqual(tuple(generator_object), (1, 2, ...)) 

nếu nó là một máy phát vô hạn, hoặc bạn chỉ muốn nhìn vào n kết quả đầu tiên đối với một số lý do, bạn có thể combint này với itertools.islice

assertEqual(tuple(islice(generator_object, n)), (1, 2, ...)) 
+1

Đây là những gì tôi thích về Python, luôn có cách dọn dẹp dễ dàng hơn. Cảm ơn! –

0

Sử dụng next() trên đối tượng phát điện.

assertEqual(next(generator_object), (1, 2, ...)) 
Các vấn đề liên quan