awips2/pythonPackages/nose/unit_tests/test_multiprocess_runner.py
2017-03-14 15:05:59 -05:00

120 lines
3.1 KiB
Python

import unittest
import imp
import sys
from nose.loader import TestLoader
from nose.plugins import multiprocess
from nose.suite import ContextSuite
class T_fixt:
def setupClass(cls):
pass
setupClass = classmethod(setupClass)
def test_a(self):
pass
def test_b(self):
pass
class T:
def test_a(self):
pass
def test_b(self):
pass
class TestMultiProcessTestRunner(unittest.TestCase):
def test_next_batch_with_classes(self):
r = multiprocess.MultiProcessTestRunner()
l = TestLoader()
tests = list(r.nextBatch(ContextSuite(
tests=[l.makeTest(T_fixt), l.makeTest(T)])))
print tests
self.assertEqual(len(tests), 3)
def test_next_batch_with_module_fixt(self):
mod_with_fixt = imp.new_module('mod_with_fixt')
sys.modules['mod_with_fixt'] = mod_with_fixt
def teardown():
pass
class Test(T):
pass
mod_with_fixt.Test = Test
mod_with_fixt.teardown = teardown
Test.__module__ = 'mod_with_fixt'
r = multiprocess.MultiProcessTestRunner()
l = TestLoader()
tests = list(r.nextBatch(l.loadTestsFromModule(mod_with_fixt)))
print tests
self.assertEqual(len(tests), 1)
def test_next_batch_with_module(self):
mod_no_fixt = imp.new_module('mod_no_fixt')
sys.modules['mod_no_fixt'] = mod_no_fixt
class Test2(T):
pass
class Test_fixt(T_fixt):
pass
mod_no_fixt.Test = Test2
Test2.__module__ = 'mod_no_fixt'
mod_no_fixt.Test_fixt = Test_fixt
Test_fixt.__module__ = 'mod_no_fixt'
r = multiprocess.MultiProcessTestRunner()
l = TestLoader()
tests = list(r.nextBatch(l.loadTestsFromModule(mod_no_fixt)))
print tests
self.assertEqual(len(tests), 3)
def test_next_batch_with_generator_method(self):
class Tg:
def test_gen(self):
for i in range(0, 3):
yield self.check, i
def check(self, val):
pass
r = multiprocess.MultiProcessTestRunner()
l = TestLoader()
tests = list(r.nextBatch(l.makeTest(Tg)))
print tests
print [r.address(t) for t in tests]
self.assertEqual(len(tests), 1)
def test_next_batch_can_split_set(self):
mod_with_fixt2 = imp.new_module('mod_with_fixt2')
sys.modules['mod_with_fixt2'] = mod_with_fixt2
def setup():
pass
class Test(T):
pass
class Test_fixt(T_fixt):
pass
mod_with_fixt2.Test = Test
mod_with_fixt2.Test_fixt = Test_fixt
mod_with_fixt2.setup = setup
mod_with_fixt2._multiprocess_can_split_ = True
Test.__module__ = 'mod_with_fixt2'
Test_fixt.__module__ = 'mod_with_fixt2'
r = multiprocess.MultiProcessTestRunner()
l = TestLoader()
tests = list(r.nextBatch(l.loadTestsFromModule(mod_with_fixt2)))
print tests
self.assertEqual(len(tests), 3)
if __name__ == '__main__':
unittest.main()