简体   繁体   中英

Using inheritance setUp() and tearDown() methods in nose tests

I have a general test class in my nosetests suit and some sub-classes, inheriting from it.

The config is likewise:

class CGeneral_Test(object)::
    """This class defines the general testcase"""
    def __init__ (self):
        do_some_init()
        print "initialisation of general class done!"

    def setUp(self):
        print "this is the general setup method"
        do_setup()

    def tearDown(self):
        print "this is the general teardown method"
        do_teardown()

Now, I have the subclasses which looks like this:

class CIPv6_Test(CGeneral_Test):
    """This class defines the sub, inherited testcase"""
    def __init__ (self):
        super(CIPv6_Test, self).__init__()
        do_some_sub_init()
        print "initialisation of sub class done!"

    def setUp(self):
        print "this is the per-test sub setup method"
        do_sub_setup()

    def test_routing_64(self):
        do_actual_testing_scenarios()

    def tearDown(self):
        print "this is the  per-test sub teardown method"
        do_sub_teardown()

So, what I want to achieve would be that each test would invoke both the sub-class and the super class setUp methods. Hence, the desired order of test is:

Base Setup
Inherited Setup
This is a some test.
Inherited Teardown
Base Teardown

Of course, this can be achieved by calling CGeneral_Test.setUp(self) from the inherited setUp() method.

Is there any configuration in which this behaviour is achieved by default without specifically invoke the super setUp and tearDown methods?

thanks!

No, but you need not specify CGeneral_Test . You didn't in CIPv6_Test.__init__ , and you can use the same strategy here:

class CIPv6_Test(CGeneral_Test):
    def setUp(self):
        super(CIPv6_Test, self).setUp()
        print "this is the per-test sub setup method"
        do_sub_setup()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM