3.3, 3.4b crash when running basic example of unittest



  • https://docs.python.org/3/library/unittest.html#basic-example
    Maybe not crash, but it rather closes RoboFont
    ...
    When I open it RoboFont back, the python file is loaded from a backup? Cool, new feature in 3.4, right?


  • admin

    Dont exit when finished ;) no crash but unittest stops the process


  • admin

    and the feature to recover code after a crash was available since the start!!


  • admin

    you can disable exit with:

    import unittest
    
    class TestStringMethods(unittest.TestCase):
    
        def test_upper(self):
            self.assertEqual('foo'.upper(), 'FOO')
    
        def test_isupper(self):
            self.assertTrue('FOO'.isupper())
            self.assertFalse('Foo'.isupper())
    
        def test_split(self):
            s = 'hello world'
            self.assertEqual(s.split(), ['hello', 'world'])
            # check that s.split fails when the separator is not a string
            with self.assertRaises(TypeError):
                s.split(2)
    
    if __name__ == '__main__':
        result = unittest.main(exit=False)
        print(result)
    


  • Good, thanks a lot! :) But maybe I am doing something wrong. Running this outside of RoboFont tells that tests were done and in RoboFont it tells me that 0 tests were done in 0 seconds.


  • admin

    as there is no module in the main:

    import unittest
    
    class TestStringMethods(unittest.TestCase):
    
        def test_upper(self):
            self.assertEqual('foo'.upper(), 'FOO')
    
        def test_isupper(self):
            self.assertTrue('FOO'.isupper())
            self.assertFalse('Foo'.isupper())
    
        def test_split(self):
            s = 'hello world'
            self.assertEqual(s.split(), ['hello', 'world'])
            # check that s.split fails when the separator is not a string
            with self.assertRaises(TypeError):
                s.split(2)
    
    if __name__ == '__main__':
        loader = unittest.TestLoader()
        tests = []
        for _, obj in list(locals().items()):
            try:
                if issubclass(obj, unittest.TestCase):            
                    tests.append(loader.loadTestsFromTestCase(obj))    
            except:
                pass
        suite = unittest.TestSuite(tests)
        runner = unittest.TextTestRunner()
        result = runner.run(suite)
        print(result)
    

Log in to reply