2016-01-12 13 views
13

Tôi đang sử dụng python khuôn khổ unittest. Có thể chỉ định bởi khả năng của khung thời gian chờ kiểm tra? Nếu không, có thể chỉ định một cách duyên dáng một timeout cho tất cả các thử nghiệm và đối với một số thử nghiệm được tách riêng có giá trị riêng cho từng thử nghiệm không?
Tôi muốn xác định global timeout cho tất cả các thử nghiệm (chúng sẽ sử dụng nó theo mặc định) và thời gian chờ cho một số thử nghiệm có thể mất nhiều thời gian.Làm thế nào để xác định thời gian chờ kiểm tra cho python unittest?

Trả lời

13

Theo như tôi biết unittest không chứa bất kỳ hỗ trợ nào cho thời gian chờ kiểm tra.

Bạn có thể thử thư viện timeout-decorator từ PyPI. Áp dụng các trang trí trên các bài kiểm tra cá nhân để làm cho họ chấm dứt nếu họ mất quá lâu:

import timeout_decorator 

class TestCaseWithTimeouts(unittest.TestCase): 

    # ... whatever ... 

    @timeout_decorator.timeout(LOCAL_TIMEOUT) 
    def test_that_can_take_too_long(self): 
     sleep(float('inf')) 

    # ... whatever else ... 

Để tạo một thời gian chờ toàn cầu, bạn có thể thay thế gọi

unittest.main() 

với

timeout_decorator.timeout(GLOBAL_TIMEOUT)(unittest.main)() 
+0

Thú vị. Tôi không sử dụng 'unittest.main()', nhưng tôi hy vọng tôi có thể sử dụng 'decorator' cho trường hợp của tôi. Nhưng các bài kiểm tra của tôi sẽ không đi theo một chủ đề nào ... – Jury

+0

@Jury Kiểm tra phần "Đa luồng" trong tham chiếu ['timeout-decorator'] (https://pypi.python.org/pypi/timeout-decorator) - bạn chỉ cần cần sử dụng 'timeout_decorator.timeout (TIMEOUT, use_signals = False)' trong môi trường nhiều luồng. – Lav

+0

Vâng, tôi đã nhìn thấy nó. Tôi sẽ thử. – Jury

Các vấn đề liên quan