Câu trả lời:
Các phương thức kiểm tra riêng lẻ hoặc các lớp đều có thể bị vô hiệu hóa bằng cách sử dụng unittest.skip
trang trí.
@unittest.skip("reason for skipping")
def test_foo():
print('This is foo test case.')
@unittest.skip # no reason needed
def test_bar():
print('This is bar test case.')
Đối với các tùy chọn khác, hãy xem tài liệu để bỏ qua các bài kiểm tra và các thất bại dự kiến .
@unittest.skip
cũng hoạt động tốt.
@unittest.skip
không hoạt động.
Bạn có thể sử dụng các công cụ trang trí để vô hiệu hóa kiểm tra có thể bao bọc chức năng và ngăn kiểm tra đơn vị googletest hoặc python để chạy testcase.
def disabled(f):
def _decorator():
print f.__name__ + ' has been disabled'
return _decorator
@disabled
def testFoo():
'''Foo test case'''
print 'this is foo test case'
testFoo()
Đầu ra:
testFoo has been disabled
Phiên bản mới nhất (2.7 - chưa được phát hành) hỗ trợ bỏ qua / vô hiệu hóa thử nghiệm như vậy . Bạn chỉ có thể lấy mô-đun này và sử dụng nó trên bản cài đặt Python hiện có của bạn. Nó có thể sẽ làm việc.
Trước đó, tôi đã sử dụng để đổi tên các bài kiểm tra tôi muốn bỏ qua để xtest_testname
từ test_testname
.
Đây là một kịch bản elisp nhanh chóng để làm điều này. Elisp của tôi là một chút gỉ nên tôi xin lỗi trước cho bất kỳ vấn đề nó có. Chưa được kiểm tra.
(defun disable_enable_test ()
(interactive "")
(save-excursion
(beginning-of-line)
(search-forward "def")
(forward-char)
(if (looking-at "disable_")
(zap-to-char 1 ?_)
(insert "disable_"))))
Chỉ cần đặt @unittest.SkipTest
trang trí trên thử nghiệm là đủ.
unittest.skip
(không có lý do) cho tôi lỗi trong Python 2 nhưng không phải ở Python 3.
Tập trung vào phần "tạm thời bị vô hiệu hóa" của câu hỏi, câu trả lời tốt nhất phần nào phụ thuộc vào trường hợp sử dụng. Trường hợp sử dụng đưa tôi đến đây là tôi đang thực hiện phát triển dựa trên thử nghiệm trên một chức năng. Trong quá trình này, tôi liên tiếp viết các bài kiểm tra và thường sử dụng các điểm ngắt trong hàm để gỡ lỗi. Nếu tôi chỉ chạy tất cả các bài kiểm tra mỗi lần tôi chạy bài kiểm tra, tôi sẽ dừng tại các điểm dừng để kiểm tra đã hoạt động. Thêm "bỏ qua" hoặc trộn tên thử nghiệm hoặc một cái gì đó tương tự không phải là điều tôi muốn bởi vì khi tôi viết xong chức năng, tôi muốn tất cả các thử nghiệm chạy. Nếu tôi sử dụng "bỏ qua", tôi sẽ phải quay lại và "bỏ qua".
Đối với trường hợp sử dụng của tôi, giải pháp nằm trong trình chạy thử chứ không phải trong mã kiểm tra. Tôi sử dụng pytest . Với pytest, thật dễ dàng để chỉ định một thử nghiệm duy nhất từ dòng lệnh:
PYTHON_FILENAME.TEST_CLASS.TEST_NAME
(thay thế các mũ bằng các giá trị của bạn).
Tôi hiểu câu hỏi đó là dành cho python-unitest. Tôi đã không sử dụng nó trong một thời gian dài. Tôi sẽ không ngạc nhiên nếu nó có thứ gì đó tương tự như pytest. Nếu không, bạn có thể dễ dàng chuyển sang pytest. Bạn không cần phải sửa đổi mã của bạn. Chỉ cần cài đặt nó và thay đổi lệnh chạy thử nghiệm của bạn.
Ngoài ra, tôi sử dụng PyCharm Pro. Trên trang hiển thị mã kiểm tra của tôi, có một biểu tượng nhỏ bên cạnh def cho mỗi bài kiểm tra. Tôi có thể nhấp vào biểu tượng đó và chạy thử nghiệm riêng lẻ.
@unittest.SkipTest
tác dụng và không@unittest.skip