7

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 <Page>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 <Page>Test, which doesn't seem right to me.

Is there a way to use the skip decorators when using a Base?

class BaseTestClass(unittest.TestCase):

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

    def tearDown():
        #clean up

One of the test classes in a separate module:

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

1 Answer 1

3

Obviously this requires unittest2 (or Python 3, I assume), but other than that, your example was pretty close. Make sure the name of your real test code gets discovered by your unit test discovery mechanism (test_*.py for nose).

#base.py
import sys
import unittest2 as unittest

class BaseTestClass(unittest.TestCase):

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

And in the actual 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

Which gives the output

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

OK (SKIP=1)
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks, I'd never thought to use the wild-card import.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.