mardi 29 mars 2016

Creating automatically test cases

I am trying to create automatically test cases and run them through nosetest.

The test runs fine when run with commands: python –m unittest test_auto1 python –m unittest test_auto1.TestAuto.test_two

However, if I try to run a test using nosetest, it fails in certain conditions:

1) nosetests test_auto1 - Fails with error
2) nosetests test_auto1:TestAuto – Works Fine
3) nosetests test_auto1:TestAuto.test_one – Fails with error

Here is the test code:

import unittest

def generator(test_class, a, b):
    def test(self):
        self.assertEqual(a, b)
    return test

def add_test_methods(test_class):
    #First element of list is variable "a", then variable "b", then name of test case that will be used as suffix.
    test_list = [[2,3, 'one'], [5,5, 'two'], [0,0, 'three']]
    for case in test_list:
        test = generator(test_class, case[0], case[1])
        setattr(test_class, "test_%s" % case[2], test)


class TestAuto(unittest.TestCase):
    def setUp(self):
        print 'Setup'
        pass

    def tearDown(self):
        print 'TearDown'
        pass

add_test_methods(TestAuto)

if __name__ == '__main__':
    unittest.main(verbosity=1)

The error while running single test is:

======================================================================
ERROR: Failure: ValueError (no such test method in <class 'test_auto2.TestAuto'>: test)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\nose-1.3.1-py2.7.egg\nose\loader.py", line 516, in makeTest
    return self._makeTest(obj, parent)
  File "C:\Python27\lib\site-packages\nose-1.3.1-py2.7.egg\nose\loader.py", line 570, in _makeTest
    return parent(obj.__name__)
  File "C:\Python27\lib\unittest\case.py", line 189, in __init__
    (self.__class__, methodName))
ValueError: no such test method in <class 'test_auto2.TestAuto'>: test

----------------------------------------------------------------------
Ran 1 test in 0.001s

FAILED (errors=1)

Aucun commentaire:

Enregistrer un commentaire