tl.testing cung cấp các tiện ích khác nhau mà có thể được sử dụng khi viết bài kiểm tra & nbsp;. Nó là tương thích với các phiên bản Python 2.6 và 2.7.
Hố cát của các thư mục và các tập tin
Khi kiểm tra code để thay đổi thư mục và tập tin, nó rất hữu ích để có thể tạo ra và kiểm tra một cây mẫu của các thư mục và các tập tin một cách dễ dàng. Các mô-đun tl.testing.fs cung cấp hỗ trợ cho việc tạo ra một cây từ một mô tả văn bản, liệt kê nó trong một định dạng và làm sạch sau khi chính nó.
Trong một thử nghiệm doc, các cơ sở này có thể được sử dụng như thế này để tạo ra và liệt kê một thư mục, tập tin và một liên kết tượng trưng:
>>> Từ tl.testing.fs new_sandbox nhập khẩu, ls
>>> New_sandbox ("" "
... D foo
... F foo / bar asdf
... L baz -> foo / bar
... "" ")
>>> Ls ()
l baz -> foo / bar
d foo
f foo / bar asdf
Xem các fs.txt tập tin được tìm thấy với các mã nguồn để được tư vấn thêm, bao gồm cách thiết lập và ngắt các bài kiểm tra sử dụng chỗ thử tập tin hệ thống.
Cài đặt các kịch bản có thể được gọi
Một số chức năng một người có thể muốn kiểm tra sử dụng các chương trình bên ngoài như một máy nhắn tin hoặc một trình soạn thảo văn bản. Các mô-đun tl.testing.script cung cấp tiện ích cài đặt các kịch bản giả đơn giản ở những nơi mà các mã để được kiểm tra sẽ tìm thấy chúng. Họ mất một chuỗi các mã Python và tạo ra một kịch bản wrapper mà đặt đường dẫn Python để phù hợp với các bài kiểm tra và chạy mã.
Đây là cách một kịch bản giả như vậy có thể được sử dụng trong một thử nghiệm doc:
>>> Từ nhập khẩu tl.testing.script cài đặt
>>> Script_path = cài đặt ("in" Một kịch bản đơn giản. '")
>>> Print mở (script_path) .read ()
#! ...
sys nhập khẩu
sys.path [:] = [...]
print 'Một kịch bản đơn giản. "
>>> Nhập tiến trình con
>>> Sub = subprocess.Popen (script_path, vỏ = True, stdout = subprocess.PIPE)
>>> Stdout, stderr = sub.communicate ()
>>> Print stdout
Một kịch bản đơn giản.
Xem các script.txt tập tin được tìm thấy với các mã nguồn cho khả năng thêm làm thế nào để cài đặt và truy cập các kịch bản giả cũng như làm thế nào để hạ bệ thử nghiệm bằng cách sử dụng các kịch bản giả.
Doc kiểm nghiệm các nội dung đồ họa của bề mặt cairo
Trong khi đó là thẳng về phía trước để so sánh nội dung của hai bề mặt cairo trong mã Python, xử lý đồ họa vượt ra ngoài kiểm tra doc. Tuy nhiên, các gói manuel có thể được sử dụng để trích xuất các trường hợp kiểm tra tổng quát hơn từ một tài liệu văn bản trong khi cho phép kết hợp chúng với các xét nghiệm doc theo một cách tự nhiên.
Các mô-đun tl.testing.cairo cung cấp một nhà máy thử nghiệm bộ phần mềm sử dụng để thực hiện các bài kiểm tra manuel đồ họa trình bày như là con số được tái cấu trúc văn bản. Các chú thích của một hình ảnh như vậy được coi là một biểu hiện Python đen có giá trị là một bề mặt cairo, và hình ảnh của nó được sử dụng như kỳ vọng thử nghiệm.
Đây là cách một bề mặt có thể được so sánh với một hình ảnh dự kiến trong một bài kiểm tra doc:
>>> Nhập cairo
>>> Từ pkg_resources resource_filename nhập khẩu
>>> Image = resource_filename ('tl.testing', 'testimages / correct.png')
.. :: Hình tl / thử nghiệm / testimages / correct.png
& Nbsp; `` cairo.ImageSurface.create_from_png (image) ``
Xem các cairo.txt tập tin được tìm thấy với các mã nguồn để được tư vấn thêm và tài liệu hướng dẫn của đầu ra kiểm tra có thể.
Làm việc với các chủ đề trong mã thử nghiệm
Các lớp TestCase chuẩn không thu thập các lỗi và thất bại xảy ra trong các chủ đề khác so với một trong những chính. Các mô-đun tl.testing.thread cung cấp các lớp chủ đề và một lớp ThreadAwareTestCase để cho phép điều đó, cũng như một số tiện ích khác cho các bài kiểm tra mà đối phó với chủ đề: phòng ngừa trường hợp ngoại lệ unhandled dự kiến trong đề từ được in với sản lượng kiểm tra, bài báo cáo lại phía sau bởi một thử nghiệm, chạy mã trong một daemon thread, tham gia chủ đề và đếm các chủ đề bắt đầu trong thời gian chạy thử nghiệm của:
>>> Thời gian nhập khẩu
>>> Nhập tl.testing.thread
>>> Class SampleTest (tl.testing.thread.ThreadAwareTestCase):
...
... Def test_error_in_thread_should_be_reported (tự):
... Với tl.testing.thread.ThreadJoiner (1):
... Self.run_in_thread (lambda: 1/0)
...
... Def test_active_count_should_count_only_new_threads (tự):
... Với tl.testing.thread.ThreadJoiner (1):
... Self.run_in_thread (lambda: time.sleep (0,1))
... Self.assertEqual (1, self.active_count ())
... Self.assertEqual (0, self.active_count ())
>>> Nhập unittest
>>> Run (unittest.makeSuite (SampleTest))
================================================== ====================
ERROR: test_error_in_thread_should_be_reported (__builtin __ SampleTest.)
-------------------------------------------------- --------------------
Traceback (hầu hết cuộc gọi gần đây nhất):
& Nbsp; ...
ZeroDivisionError: phân chia số nguyên modulo hoặc bằng zero
-------------------------------------------------- --------------------
Ran 2 bài kiểm tra trong N.NNNs
FAILED (lỗi = 1)
Xem các tập tin thread.txt tìm thấy với các mã nguồn để biết thêm chi tiết về các lớp ThreadAwareTestCase.
Xây dựng dãy phòng thử nghiệm có sử dụng manuel
Như manuel cung cấp một số tính năng mạnh mẽ ngoài doctests chuẩn, manuel dãy phòng thử nghiệm được thiết lập hơi khác với những tiêu chuẩn. Các mô-đun tl.testing.doctest thực hiện một nhà máy DocFileSuite mà có thể được sử dụng như một trong những tiêu chuẩn nhưng tạo ra một bộ thử nghiệm sử dụng manuel và cho phép một số cấu hình bổ sung liên quan đến manuel, trong số đó có khả năng để giải thích các chú thích được sử dụng để được thực hiện bằng cách sử dụng phản zope.testing.doctest:
>>> Sample_txt = write ('sample.txt', "" "
... [#footnote] _
... >>> X
... 1
...
... .. [#footnote]
... >>> X = 1
... "" ")
>>> Từ tl.testing.doctest DocFileSuite nhập khẩu
>>> Run (DocFileSuite (sample_txt, chú thích = True))
-------------------------------------------------- --------------------
Ran 1 thử nghiệm trong N.NNNs
ĐƯỢC
>>> Sample_txt = write ('sample.txt', "" "
... .. Mã-block :: python
... X = 1
...
... >>> X
... 1
... "" ")
>>> Nhập manuel.codeblock
>>> Run (DocFileSuite (sample_txt, manuel = manuel.codeblock.Manuel ()))
-------------------------------------------------- --------------------
Ran 1 thử nghiệm trong N.NNNs
OK
Yêu cầu :
- Python
Bình luận không