2013-05-03 27 views
6

Tôi cần phải đặt hàng thực hiện cho các thử nghiệm của mình, vì tôi cần một số dữ liệu được xác minh trước những người khác. Có thể đặt hàng?Lệnh thi hành trên python unittest

class OneTestCase(unittest.TestCase): 
    def setUp(self): 
     # something to do 
    def test_login (self): 
     # first test 
     pass 
    def test_other (self): 
     # any order after test_login 
    def test_othermore (self): 
     # any order after test_login 
if __name__ == '__main__': 
    unittest.main() 

nhờ

+3

kiểm tra đơn vị nghĩa là các thử nghiệm là đơn nhất. họ không phải phụ thuộc lẫn nhau. – njzk2

+0

Bạn nói đúng, nhưng sau đó, có thể là cách tốt nhất để làm một bài kiểm tra khi tôi cần phải có loại hành vi này, có thể tốt hơn nếu tôi gọi đăng nhập mỗi lần làm bài kiểm tra? Nó là cho một máy chủ cần phải bắt đầu đăng nhập trước khi làm bất cứ điều gì khác, và các phương pháp khác đọc thông tin dựa trên đăng nhập – Carlos

+3

Nếu bạn đang thực sự tương tác với một máy chủ thực trên dây, bạn không làm thử nghiệm * unit *. – delnan

Trả lời

1

Better không làm điều đó.

Thử nghiệm phải độc lập.

Để làm những gì bạn muốn tốt nhất là đặt mã vào các hàm được gọi bằng thử nghiệm.

Giống như rằng:

def assert_can_log_in(self): 
    ... 

def test_1(self): 
    self.assert_can_log_in() 
    ... 

def test_2(self): 
    self.assert_can_log_in() 
    ... 

Hoặc thậm chí để phân chia các lớp thử nghiệm và đưa khẳng định vào chức năng Setup.

class LoggedInTests(unittest.TestCase): 
    def setUp(self): 
     # test for login or not - your decision 

    def test_1(self): 
     ... 

Khi tôi chia lớp, tôi thường viết nhiều bài kiểm tra tốt hơn vì các bài kiểm tra được chia ra và tôi có thể thấy rõ hơn trong tất cả các trường hợp cần kiểm tra.

+0

cũng đăng nhập phải được kiểm tra, có thể là ok? – Carlos

+0

Xin lỗi, tôi không hiểu. – User

+3

Tôi đọc các cuộc thảo luận dài về cách viết bài kiểm tra đúng cách. Thực tế là, một số thử nghiệm phụ thuộc vào một số trạng thái nhất định, ví dụ: có thể được tạo thông qua thử nghiệm trước đó, kiểm tra việc tạo trạng thái đó (ví dụ: đang được đăng nhập). Tạo trạng thái này có thể là một thủ tục tốn thời gian, vì vậy việc sử dụng lại nó và kiểm tra chuỗi có thể đáng giá, để giữ cho khoảng thời gian thử nghiệm của bạn ngắn. Khác bạn sẽ kết thúc thử nghiệm các thủ tục đăng nhập 100 lần, chỉ để trang trải các bài kiểm tra, mà bạn làm với trạng thái đăng nhập. Vì vậy, quá triết học về tách kiểm tra không có ý nghĩa. – Michael

18

Bạn có thể làm điều đó như thế này:

class OneTestCase(unittest.TestCase): 
    @classmethod 
    def setUpClass(cls): 
     # something to do 
     pass 

    def test_01_login (self): 
     # first test 
     pass 
    def test_02_other (self): 
     # any order after test_login 
    def test_03_othermore (self): 
     # any order after test_login 

if __name__ == '__main__': 
    unittest.main(failfast=True, exit=False) 

Các xét nghiệm đều được sắp xếp theo thứ tự abc, vì vậy chỉ cần thêm số điện thoại để có được đơn đặt hàng mong muốn. Có lẽ bạn cũng muốn đặt failfast = True cho người thử nghiệm, vì vậy nó không thành công ngay lập tức, ngay khi thử nghiệm đầu tiên không thành công.

+3

Chúng được sắp xếp ở đâu? Có thể dựa vào đó không? – User

+2

unittest sắp xếp chúng một cách đáng tin cậy theo bảng chữ cái. – Michael

+0

@User Xem tài liệu Python: "Lưu ý rằng thứ tự các trường hợp thử nghiệm khác nhau sẽ được chạy được xác định bằng cách sắp xếp tên hàm thử nghiệm liên quan đến thứ tự được cài sẵn cho chuỗi." – mloskot

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