Пример #1
0
 def test_remove_child_suite_from_parent_and_app(self):
     discovered_app = DiscoveredRobotApplication(self.test_robot_app)
     discovered_app.discover_suites_and_tests()
     parent = 'TestRobotAppSuite.RobotAppSubDirectory'
     discovered_suite = [
         ds for ds in discovered_app.test_suites if ds.name == parent
     ][0]
     remove_child_suite = 'TestRobotAppSuite.RobotAppSubDirectory.TemplateSubSuite'
     discovered_suite.remove_discovered_child_suite(remove_child_suite)
     self.assertEqual(
         len(discovered_suite.child_suites),
         len([
             e for e in TEST_SUITE_EXPECTATIONS.get(parent)['Children']
             if e != TEST_SUITE_EXPECTATIONS.get(remove_child_suite)
             ['Short Name']
         ]),
         msg='Child test suite removal was not successful.')
     self.assertNotIn(
         remove_child_suite,
         discovered_suite.child_suites,
         msg='Child test suite was not removed from the its parent.')
     self.assertEqual(
         len([
             e for e in TEST_SUITE_EXPECTATIONS
             if not e.startswith(remove_child_suite)
         ]),
         len(discovered_app.test_suites),
         msg=
         'Child test suite removal from discovered app was not successful.')
     self.assertNotIn(
         remove_child_suite,
         discovered_app.test_suites,
         msg='Child test suite was not removed from the disocvered app.')
Пример #2
0
 def test_prevent_duplicate_root_suites(self):
     discovered_app = DiscoveredRobotApplication(self.test_robot_app)
     discovered_app.discover_suites_and_tests()
     discovered_app.root_suite.configure()
     discovered_app.root_suite.configure(
     )  # prevent root suite dupes, parent == NULL
     self.assertEqual(
         len(RobotTestSuite.objects.filter(name='TestRobotAppSuite')), 1)
Пример #3
0
 def test_suites_must_be_discovered_before_configured(self):
     discovered_app_suites_not_discovered = DiscoveredRobotApplication(
         self.test_robot_app)
     with self.assertRaisesMessage(
             RobotDiscoveryException,
             'Tests and suites must be discovered before '
             'they can be configured.'):
         discovered_app_suites_not_discovered.configure_suites_and_tests()
Пример #4
0
 def test_configure_robot_suite_before_parent_raises(self):
     discovered_app = DiscoveredRobotApplication(self.test_robot_app)
     discovered_app.discover_suites_and_tests()
     parent_verbose = 'TestRobotAppSuite.RobotAppSubDirectory'
     suite_name = 'TestRobotAppSuite.RobotAppSubDirectory.TemplateSubSuite'
     suite_to_configure = [
         s for s in discovered_app.test_suites if s.name == suite_name
     ][0]
     with self.assertRaisesMessage(
             RobotDiscoveryException,
             'There should have been an existing parent suite, but '
             'one was not found. Tried to find a test suite with '
             'this verbose/display name: ' + parent_verbose):
         suite_to_configure.configure()
Пример #5
0
 def test_root_app_suite_discovery(self):
     discovered_app = DiscoveredRobotApplication(self.test_robot_app)
     discovered_app.discover_suites_and_tests()
     self.assertEqual(discovered_app.root_suite.name, 'TestRobotAppSuite')
     self.assertIsInstance(discovered_app.root_suite,
                           DiscoveredRobotTestSuite)
     self.assertIsInstance(discovered_app.root_suite.suite_test_data,
                           TestDataDirectory)
     self.assertEqual(discovered_app.root_suite.documentation,
                      '')  # This is a directory and has no documentation.
     self.assertEqual(discovered_app.root_suite.location,
                      TEST_ROBOT_APP_DIR)
     self.assertEqual(
         discovered_app.root_suite.tests,
         [])  # This is a directory and has no direct child tests.
Пример #6
0
 def test_configure_robot_test_before_suite_raises(self):
     discovered_app = DiscoveredRobotApplication(self.test_robot_app)
     discovered_app.discover_suites_and_tests()
     suite_verbose = 'TestRobotAppSuite.RobotAppSubDirectory.TemplateSubSuite'
     test_name = 'Invalid Username And Password'
     suite_to_configure = [
         s for s in discovered_app.test_suites if s.name == suite_verbose
     ][0]
     test_to_configure = [
         t for t in suite_to_configure.tests if t.name == test_name
     ][0]
     with self.assertRaisesMessage(
             RobotDiscoveryException,
             'There should have been an existing test suite for '
             'this test, but one was not found: ' + suite_verbose):
         test_to_configure.configure()
Пример #7
0
 def test_bad_app_test_location_raises(self):
     with self.assertRaisesMessage(
             RobotDiscoveryException,
             'There was an issue accessing data in the test location '
             'for this application. Make sure it was created '
             'correctly. The error message was: '):
         DiscoveredRobotApplication(self.bad_robot_app)
Пример #8
0
 def test_remove_test_from_suite(self):
     discovered_app = DiscoveredRobotApplication(self.test_robot_app)
     discovered_app.discover_suites_and_tests()
     test_suite = 'TestRobotAppSuite.AppSubSuite2'
     discovered_suite = [
         ds for ds in discovered_app.test_suites if ds.name == test_suite
     ][0]
     remove_test = 'Another Test'
     discovered_suite.remove_discovered_test(remove_test)
     self.assertEqual(len([
         t for t in TEST_SUITE_EXPECTATIONS.get(test_suite)['Tests']
         if t != remove_test
     ]),
                      len(discovered_suite.tests),
                      msg='Test removal from test suite was unsuccessful.')
     self.assertNotIn(remove_test,
                      discovered_suite.tests,
                      msg='Test was not removed from the discovered suite.')
Пример #9
0
 def test_discovered_robot_app_creation(self):
     # Expected attribute values after application under test is discovered
     discovered_app = DiscoveredRobotApplication(self.test_robot_app)
     self.assertEqual(discovered_app.app, self.test_robot_app)
     self.assertEqual(discovered_app.name, 'My Test Robot App')
     self.assertEqual(discovered_app.source, TEST_ROBOT_APP_DIR)
     self.assertIsNone(discovered_app.root_suite)
     self.assertEqual(discovered_app.test_suites, [])
     self.assertEqual(repr(discovered_app),
                      'DiscoveredRobotApplication: ' + 'My Test Robot App')
Пример #10
0
 def test_robot_test_discovery(self):
     discovered_app = DiscoveredRobotApplication(self.test_robot_app)
     discovered_app.discover_suites_and_tests()
     for s in discovered_app.test_suites:
         expected_tests = TEST_SUITE_EXPECTATIONS.get(s.name)['Tests']
         self.assertEqual(len(expected_tests),
                          len(s.tests),
                          msg='Unexpected tests discovered in suite: ' +
                          s.name)
         for t in s.tests:  # DiscoveredRobotTest
             self.assertIsInstance(t, DiscoveredRobotTest)
             self.assertIsNotNone(
                 expected_tests.get(t.name),
                 msg='Unexpected test found in {s}: {t}'.format(s=s.name,
                                                                t=t.name))
             self.assertEqual(
                 expected_tests.get(t.name)['Doc'],
                 t.documentation,
                 msg='Discovered test documentation for {t} incorrect: {d}'.
                 format(t=t.name, d=t.documentation))
Пример #11
0
 def test_child_suites_discovery(self):
     discovered_app = DiscoveredRobotApplication(self.test_robot_app)
     discovered_app.discover_suites_and_tests()
     self.assertEqual(len(discovered_app.test_suites),
                      len(TEST_SUITE_EXPECTATIONS))
     for s in discovered_app.test_suites:
         self.assertIsNotNone(TEST_SUITE_EXPECTATIONS.get(s.name),
                              msg='Unexpected test suite discovered.')
         self.assertEqual(TEST_SUITE_EXPECTATIONS.get(s.name)['Location'],
                          s.location,
                          msg='Unexpected test suite location discovered.')
         self.assertEqual(TEST_SUITE_EXPECTATIONS.get(s.name)['Doc'],
                          s.documentation,
                          msg='Unexpected test suite documentation')
         if TEST_SUITE_EXPECTATIONS.get(s.name)['Has Parent']:
             self.assertEqual(
                 TEST_SUITE_EXPECTATIONS.get(s.name)['Parent'],
                 s.name.split('.')[-2])
         else:
             self.assertEqual(len(s.name.split('.')), 1)
Пример #12
0
 def test_configure_robot_app(self):
     discovered_app = DiscoveredRobotApplication(self.test_robot_app)
     discovered_app.discover_suites_and_tests()
     discovered_app.configure_suites_and_tests()
     all_suites = RobotTestSuite.objects.all()
     self.assertEqual(len(all_suites), len(TEST_SUITE_EXPECTATIONS))
     for suite in all_suites:
         expected_suite_info = TEST_SUITE_EXPECTATIONS.get(
             suite.verbose_name)
         self.assertEqual(expected_suite_info['Short Name'], suite.name)
         self.assertEqual(expected_suite_info['Doc'], suite.documentation)
         self.assertEqual(suite.application, self.test_robot_app)
         self.assertEqual(expected_suite_info['Location'],
                          suite.suite_location)
         if expected_suite_info['Parent'] is not None:
             self.assertEqual(expected_suite_info['Parent'],
                              suite.parent.name)
         all_suite_tests = RobotTest.objects.filter(robot_suite=suite)
         self.assertEqual(len(all_suite_tests),
                          len(expected_suite_info['Tests']))
         for test in all_suite_tests:
             test_info = expected_suite_info.get('Tests')
             self.assertIsInstance(test, RobotTest)
             self.assertIsNotNone(test_info.get(test.name))
             self.assertEqual(test.documentation,
                              test_info.get(test.name)['Doc'])
Пример #13
0
 def test_child_test_suite_discovery_only(self):
     discovered_app = DiscoveredRobotApplication(self.test_robot_app)
     discovered_app.discover_suites_and_tests()
     discovered_app.configure_suites_and_tests(
     )  # Configure this to create saved RobotTestSuite in test DB
     existing_robot_suite = RobotTestSuite.objects.get(
         name='RobotAppSubDirectory')
     discovered_suite = DiscoveredRobotTestSuite(
         robot_suite=existing_robot_suite)
     discovered_suite.discover_child_suites_and_tests()
     self.assertIsNotNone(
         TEST_SUITE_EXPECTATIONS.get(discovered_suite.name),
         msg='Discovered child suite had an unexpected name: ' +
         discovered_suite.name)
     self.assertEqual(
         len(
             TEST_SUITE_EXPECTATIONS.get(
                 discovered_suite.name)['Children']),
         len(discovered_suite.child_suites),
         msg='Unexpected number of child suites discovered in: ' +
         discovered_suite.name)
     for child in discovered_suite.child_suites:
         child_short_name = child.name.split(existing_robot_suite.name +
                                             '.')[-1]
         self.assertEqual(TEST_SUITE_EXPECTATIONS.get(
             discovered_suite.name)['Children'].count(child_short_name),
                          1,
                          msg=child_short_name)
Пример #14
0
 def test_remove_suite_from_app(self):
     discovered_app = DiscoveredRobotApplication(self.test_robot_app)
     discovered_app.discover_suites_and_tests()
     remove_suite = 'TestRobotAppSuite.RobotAppSubDirectory.NestedChildSuite'
     discovered_app.remove_discovered_test_suite(remove_suite)
     self.assertEqual(
         len([
             e for e in TEST_SUITE_EXPECTATIONS
             if not e.startswith(remove_suite)
         ]),
         len(discovered_app.test_suites),
         msg='Test suite removal from discovered app was not successful.')
     self.assertNotIn(remove_suite,
                      discovered_app.test_suites,
                      msg='Test suite was not removed from the app.')
Пример #15
0
 def setUpTestData(cls):
     print('\nRunning robotapi test execution unit tests in: ' + HERE)
     print('Dummy Robot test suite located here: ' + TEST_ROBOT_APP_DIR)
     # Create a dummy RobotApplicationUnderTest object saved in the test database (in memory for SQLite3)
     cls.test_robot_app = RobotApplicationUnderTest.objects.create(
         name='My Test Robot App',
         description='An application created for testing '
         'RobotWeb discovery tools.',
         robot_location=BASE_DIR,
         app_test_location=TEST_ROBOT_APP_DIR)
     discovered_app = DiscoveredRobotApplication(cls.test_robot_app)
     discovered_app.discover_suites_and_tests()
     discovered_app.configure_suites_and_tests()
     cls.other_robot_app = RobotApplicationUnderTest.objects.create(
         name='My Other Test Robot App',
         description='Another application created for '
         'testing RobotWeb discovery tools.',
         robot_location=os.getenv('ROBOT_PROJECT_PATH') +
         SEP.join(['', 'path', 'to', 'other', 'robot']),
         app_test_location=os.getenv('ROBOT_PROJECT_PATH') +
         SEP.join(['', 'path', 'to', 'other', 'tests']))