Sau khi xem xét các answe khác rs ở đây, đây là câu trả lời tốt nhất mà tôi đã đưa ra. Nó xấu xí, nhúng toàn bộ bộ thử nghiệm trong xử lý ngoại lệ, nhưng nó dường như làm những gì bạn muốn. Cụ thể bỏ qua các kiểm tra khi nhập khẩu không hoạt động.
Giả sử bạn đang nói về việc sử dụng nosetests -x để chạy các kiểm tra cần thực hiện trong quá khứ các thử nghiệm bỏ qua, ít nhất nó xuất hiện khi tôi thử nó.
import unittest
try:
import PyQt4
# the rest of the imports
# actual tests go here.
class TestDataEntryMixin(unittest.TestCase):
def test_somefeature(self):
# ....
except ImportError, e:
if e.message.find('PyQt4') >= 0:
class TestMissingDependency(unittest.TestCase):
@unittest.skip('Missing dependency - ' + e.message)
def test_fail():
pass
else:
raise
if __name__ == '__main__':
unittest.main()
Nếu quá trình nhập không thành công, nó sẽ thay thế chạy thử bằng một lần kiểm tra đơn giản bỏ qua. Tôi cũng đã cố gắng để đảm bảo rằng nó không nuốt bất kỳ trường hợp ngoại lệ vô ý. Giải pháp này nợ rất nhiều cho tất cả các câu trả lời và nhận xét khác cho câu hỏi.
Nếu bạn chạy nó trong chế độ verbose bạn sẽ thấy điều này khi nó bỏ qua,
test_fail (test_openihm_gui_interface_mixins.TestMissingDependency) ... skipped 'Missing dependency - No module named PyQt4'
Nguồn
2012-09-20 10:12:54
FYI, có một bài đăng trên blog về chính xác điều này tại http://colinnewell.wordpress.com/2012/08/31/skippng-python-unit-tests-if-a-dependency-is-missing/ –
@Mu Mind, điều này có tác dụng ngoại trừ việc tôi đang nói "mũi" thành "thất bại nhanh". Gọi 'unittest.SkipTest()' dường như được tính là lỗi và tạm dừng thực thi. –