2013-12-16 12 views
5

Trong khi thử nghiệm một trong các ứng dụng web của chúng tôi để làm rõ, tôi đã tạo một BaseTestClass kế thừa unittest.TestCase. BaseTestClass bao gồm các phương pháp setUp()tearDown() của chúng tôi, mỗi lớp trong số các lớp học <Page>Test của tôi sau đó được kế thừa từ đó.Python unittest, bỏ qua các kiểm tra khi sử dụng lớp thử nghiệm cơ sở

Do các thiết bị khác nhau đang được kiểm tra có các trang tương tự với một số khác biệt, tôi muốn sử dụng trang trí @unittest.skipIf() nhưng việc chứng minh nó khó khăn. Thay vì 'kế thừa' trang trí từ BaseTestClass, nếu tôi cố gắng sử dụng trình trang trí đó, Eclipse cố gắng tự động nhập unittest.TestCase vào <Page>Test, điều này dường như không phù hợp với tôi.

Có cách nào để sử dụng các trang trí skip khi sử dụng Base không?

class BaseTestClass(unittest.TestCase): 

    def setUp(): 
     #do setup stuff 
     device = "Type that blocks" 

    def tearDown(): 
     #clean up 

Một trong những lớp học thử nghiệm trong một mô-đun riêng biệt:

class ConfigPageTest(BaseTestClass): 

    def test_one(self): 
     #do test 

    def test_two(self): 
     #do test 

    @unittest.skipIf(condition, reason) <<<What I want to include 
    def test_three(self): 
     #do test IF not of the device type that blocks 

Trả lời

2

Rõ ràng điều này đòi hỏi unittest2 (hoặc Python 3, tôi giả sử), nhưng khác hơn thế, ví dụ của bạn là khá chặt chẽ. Hãy chắc chắn rằng tên của mã kiểm tra thực của bạn được phát hiện bởi cơ chế khám phá thử nghiệm đơn vị của bạn (test_*.py cho mũi).

#base.py 
import sys 
import unittest2 as unittest 

class BaseTestClass(unittest.TestCase): 

    def setUp(self): 
     device = "Type that blocks" 
    def tearDown(self): 
     pass 

Và trong mã thực tế:

# test_configpage.py 
from base import * 

class ConfigPageTest(BaseTestClass): 

    def test_one(self): 
     pass 

    def test_two(self): 
     pass 

    @unittest.skipIf(True, 'msg') 
    def test_three(self): 
     pass 

Mà cho đầu ra

.S. 
---------------------------------------------------------------------- 
Ran 3 tests in 0.016s 

OK (SKIP=1) 
+0

Cảm ơn, tôi chưa bao giờ nghĩ đến sử dụng nhập khẩu wild-card. –

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