2011-11-08 29 views
19

Tôi đã viết một trình phân tích cú pháp HTML chuyên biệt, mà tôi muốn thử nghiệm đơn vị với một vài trang web mẫu mà tôi đã tải xuống.Làm thế nào để tải dữ liệu từ một tập tin, cho một bài kiểm tra đơn vị, trong python?

Trong Java, tôi đã sử dụng tài nguyên lớp, để tải dữ liệu vào các bài kiểm tra đơn vị, mà không phải dựa vào chúng ở một đường dẫn cụ thể trên hệ thống tệp. Có cách nào để làm điều này trong Python?

Tôi đã tìm thấy chức năng doctest.testfile(), nhưng dường như chỉ dành riêng cho tài liệu. Tôi muốn chỉ nhận được một tập tin xử lý, đến một tập tin HTML cụ thể, mà là tương đối so với các mô-đun hiện tại.

Cảm ơn trước vì bất kỳ đề xuất nào!

Trả lời

34

Để tải dữ liệu từ một tập tin trong một unittest, nếu TestData là trên cùng một thư mục như unittests, một giải pháp:

TESTDATA_FILENAME = os.path.join(os.path.dirname(__file__), 'testdata.html') 


class MyTest(unittest.TestCase) 

    def setUp(self): 
     self.testdata = open(TESTDATA_FILENAME).read() 

    def test_something(self): 
     .... 
1

Tôi đoán nhiệm vụ của bạn sẽ được chuyển thành những gì được cung cấp here để tải tệp hiện tại. Sau đó, mở rộng đường dẫn đó bằng đường dẫn đến tệp HTML và open nó.

1

Bạn cũng có thể sử dụng StringIO hoặc cStringIO để mô phỏng một chuỗi chứa nội dung tệp của bạn dưới dạng tệp.

+2

Ya, tôi nghĩ về điều đó, nhưng nó sẽ đòi hỏi mà tôi đặt tất cả các HTML thành một tệp python dưới dạng một chuỗi, mà tôi không thích vì nó dài> 3k dòng – cberner

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