Python Unittest, überspringt Tests bei Verwendung einer Base-Test-Klasse

Whilst testing one of our web-apps for clarity I have created a BaseTestClass which inherits unittest.TestCase. The BaseTestClass includes my setUp() and tearDown() methods, which each of my Test classes then inherit from.

Due to different devices under test having similar pages with some differences I wanted to use the @unittest.skipIf() decorator but its proving difficult. Instead of 'inheriting' the decorator from BaseTestClass, if I try to use that decorator Eclipse tries to auto-import unittest.TestCase into Test, which doesn't seem right to me.

Gibt es eine Möglichkeit, die überspringen Dekoratoren zu verwenden, wenn Sie eine Base verwenden?

class BaseTestClass(unittest.TestCase):

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

    def tearDown():
        #clean up

Eine der Testklassen in einem separaten Modul:

class ConfigPageTest(BaseTestClass):

    def test_one(self):
        #do test

    def test_two(self):
        #do test

    @unittest.skipIf(condition, reason) <<
0

1 Antworten

Offensichtlich erfordert dies unittest2 (oder Python 3, nehme ich an), aber ansonsten war dein Beispiel ziemlich nah. Stellen Sie sicher, dass der Name Ihres echten Testcodes von Ihrem Einheitentest-Erkennungsmechanismus erkannt wird ( test _ *. Py für nose).

#base.py
import sys
import unittest2 as unittest

class BaseTestClass(unittest.TestCase):

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

Und im eigentlichen Code:

# 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

Welches gibt die Ausgabe

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

OK (SKIP=1)
0
hinzugefügt
Danke, ich hätte nie gedacht, den Joker-Import zu verwenden.
hinzugefügt der Autor Mark Rowlands, Quelle