2012-04-09 25 views
10

Tôi đang cố gắng để thử nghiệm trong python bằng cách sử dụng mô-đun doctest. Tại thời điểm này, tôi làmPython: Có thể chỉ thử nghiệm các chức năng cụ thể với doctest trong mô-đun không?

  1. Viết thử nghiệm cho các chức năng.
  2. triển khai mã chức năng.
  3. Nếu thử nghiệm vượt qua, hãy viết nhiều thử nghiệm hơn và nhiều mã hơn.
  4. Khi chức năng được thực hiện, hãy chuyển sang chức năng tiếp theo để triển khai.

Vì vậy, sau 3 hoặc 4 (độc lập) hoạt động trong cùng một mô-đun với nhiều thử nghiệm, tôi nhận được kết quả đầu ra rất lớn bằng doctest. Và nó hơi khó chịu.

Có cách nào để nói với doctest "không kiểm tra chức năng a(), b()c()", vì vậy mà nó chỉ chạy đánh dấu chức năng?

Tôi chỉ tìm thấy cờ doctest.SKIP, không đủ cho nhu cầu của tôi. Tôi sẽ phải đặt lá cờ này trong rất nhiều dòng. Và nếu tôi muốn kiểm tra một hàm đánh dấu lần nữa, tôi sẽ phải đi bằng tay thông qua mã và loại bỏ bất kỳ cờ tôi đặt bên trong ...

Tôi hy vọng bạn hiểu những gì tôi có nghĩa là ... :-)

Mọi đề xuất?

+0

Doctest không tệ đối với một số thử nghiệm nhanh chóng và bẩn, nhưng tôi thực sự khuyên bạn nên xem xét một thư viện thử nghiệm nâng cao hơn. Python được xây dựng trong mô-đun 'unittest' thực sự rất tốt. (http://docs.python.org/library/unittest.html) – Wilduck

+0

@Wildluck: Tôi biết về pythons 'unittest', cảm ơn. Nhưng tất cả những gì tôi cần bây giờ là * thử nghiệm nhanh chóng và bẩn *. :-) – Aufwind

Trả lời

13

looks like bạn có thể vượt qua các chức năng để run_docstring_examples:

def f(a, b, c): 
    ''' 
    >>> f(1,2,3) 
    42 
    ''' 

if __name__ == '__main__': 
    import doctest 
# doctest.testmod() 
    doctest.run_docstring_examples(f, globals()) 

example tìm thấy qua google.

+1

điều này không hoạt động? –

+0

Nó đã làm việc, cảm ơn bạn. Xin lỗi vì đã trả lời muộn! Tôi bỏ lỡ bản tóm tắt của 'doctest.testmod (verbose = True)', nó cho bạn biết một cái gì đó như * 18 được thông qua và 0 không thành công *, và như vậy. Ngoài ra nó là loại những gì tôi đang tìm kiếm. :-) – Aufwind

+0

Và những gì về làm điều này từ một repl và không sửa đổi các tập tin nguồn? – Chris

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