ems
ems

Reputation: 990

Testing class initializer using unittest in python

I am using unittest module for writing tests. I need to test initialization of the object inside a testcase using different inputs. For this purpose I am importing the class inside setUp(). But when I try to use the class inside test_*() functions, I get this error - NameError: name 'Example' is not defined

Here is my code sample-

import unittest
class TestExample(unittest.TestCase):
    def setUp(self):
        import Example

    def test_sample_function(self):
        e = Example(1,2)

I know that I can simply import the class at top of the script. But I do not want to do that. I need to import it only during setup of the testscript. Looking for some help here.

Upvotes: 0

Views: 121

Answers (2)

chepner
chepner

Reputation: 530922

There's no reason to import the module in setUp. The module is still available globally in sys.modules, but you've only bound it to a local name that goes away after setUp returns. Just import it globally.

import unittest
import Example


class TestExample(unittest.TestCase):
    def test_sample_function(self):
        e = Example(1,2)

Upvotes: 0

jsbueno
jsbueno

Reputation: 110166

import unittest
class TestExample(unittest.TestCase):
    def setUp(self):
        import Example
        self.Example = Example

    def test_sample_function(self):
        e = self.Example(1,2)

Upvotes: 1

Related Questions