import unittest from scrapy.utils.console import get_shell_embed_func try: import bpython bpy = True del bpython except ImportError: bpy = False try: import IPython ipy = True del IPython except ImportError: ipy = False class UtilsConsoleTestCase(unittest.TestCase): def test_get_shell_embed_func(self): shell = get_shell_embed_func(['invalid']) self.assertEqual(shell, None) shell = get_shell_embed_func(['invalid','python']) self.assertTrue(callable(shell)) self.assertEqual(shell.__name__, '_embed_standard_shell') @unittest.skipIf(not bpy, 'bpython not available in testenv') def test_get_shell_embed_func2(self): shell = get_shell_embed_func(['bpython']) self.assertTrue(callable(shell)) self.assertEqual(shell.__name__, '_embed_bpython_shell') @unittest.skipIf(not ipy, 'IPython not available in testenv') def test_get_shell_embed_func3(self): # default shell should be 'ipython' shell = get_shell_embed_func() self.assertEqual(shell.__name__, '_embed_ipython_shell') if __name__ == "__main__": unittest.main()