code_junkie

How to generate dynamic unit tests in python?

Nov 10th, 2011
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.53 KB | None | 0 0
  1. import unittest
  2.  
  3. l = [["foo", "a", "a",], ["bar", "a", "b"], ["lee", "b", "b"]]
  4.  
  5. class TestSequence(unittest.TestCase):
  6. def testsample(self):
  7. for name, a,b in l:
  8. print "test", name
  9. self.assertEqual(a,b)
  10.  
  11. if __name__ == '__main__':
  12. unittest.main()
  13.  
  14. import unittest
  15.  
  16. l = [["foo", "a", "a",], ["bar", "a", "b"], ["lee", "b", "b"]]
  17.  
  18. class TestSequense(unittest.TestCase):
  19. pass
  20.  
  21. def test_generator(a, b):
  22. def test(self):
  23. self.assertEqual(a,b)
  24. return test
  25.  
  26. if __name__ == '__main__':
  27. for t in l:
  28. test_name = 'test_%s' % t[0]
  29. test = test_generator(t[1], t[2])
  30. setattr(TestSequense, test_name, test)
  31. unittest.main()
  32.  
  33. param_list = [('a', 'a'), ('a', 'b'), ('b', 'b')]
  34.  
  35. def test_generator():
  36. for params in param_list:
  37. yield check_em, params[0], params[1]
  38.  
  39. def check_em(a, b):
  40. assert a == b
  41.  
  42. > nosetests -v
  43. testgen.test_generator('a', 'a') ... ok
  44. testgen.test_generator('a', 'b') ... FAIL
  45. testgen.test_generator('b', 'b') ... ok
  46.  
  47. ======================================================================
  48. FAIL: testgen.test_generator('a', 'b')
  49. ----------------------------------------------------------------------
  50. Traceback (most recent call last):
  51. File "/usr/lib/python2.5/site-packages/nose-0.10.1-py2.5.egg/nose/case.py", line 203, in runTest
  52. self.test(*self.arg)
  53. File "testgen.py", line 7, in check_em
  54. assert a == b
  55. AssertionError
  56.  
  57. ----------------------------------------------------------------------
  58. Ran 3 tests in 0.006s
  59.  
  60. FAILED (failures=1)
Add Comment
Please, Sign In to add comment