Exemplo n.º 1
0
class TestObjectMapMiddleware(unittest.TestCase):
    def setUp(self):
        object_map_path = "testbuilder.objectmap.static.objectmap"
        parser = PythonObjectMapParse()

        object_map = parser.parse("test", object_map_path)
        object_map.switch_page("Sample")

        test = TBBaseTest()

        self.step_context = StepContext(test)
        self.step_context.object_map = object_map

        self.middleware = ObjectMapMiddleware()

    def test_middleware_before_step_one_argument(self):
        step = TBBaseStep(action="SampleAction", argument_1="sample_element")
        self.step_context.update_context(step, self.step_context)

        self.middleware.before_step(self.step_context)
        self.assertEqual(self.step_context.step_argument_1_mapped, "//sample")
        self.assertEqual(self.step_context.action_interface, "basic")

    def test_middleware_before_step_two_arguments(self):
        step = TBBaseStep(action="SampleAction",
                          argument_1="sample_element",
                          argument_2="sample_element_2")
        self.step_context.update_context(step, self.step_context)

        self.middleware.before_step(self.step_context)
        self.assertEqual(self.step_context.step_argument_1_mapped, "//sample")
        self.assertEqual(self.step_context.action_interface, "basic")

        self.assertEqual(self.step_context.step_argument_2_mapped,
                         "//test/element")
    def setUp(self):
        self.interface = SeleniumInterface()

        test = TBBaseTest()
        step_1 = TBBaseStep(action="LaunchDriver", argument_1="Chrome")
        self.step_context = StepContext(test)

        self.step_context.update_context(step_1, self.step_context)
        self.interface.LaunchDriver(self.step_context)
Exemplo n.º 3
0
    def setUp(self):
        object_map_path = "testbuilder.objectmap.static.objectmap"
        parser = PythonObjectMapParse()

        object_map = parser.parse("test", object_map_path)
        object_map.switch_page("Sample")

        test = TBBaseTest()

        self.step_context = StepContext(test)
        self.step_context.object_map = object_map

        self.middleware = ObjectMapMiddleware()
Exemplo n.º 4
0
    def test_if_equal(self):
        step_1 = TBBaseStep(action="If", argument_1="A", argument_2="A")
        step_2 = TBBaseStep(action="")
        step_3 = TBBaseStep(action="EndIf")

        step_1.add_next_step(step_2)
        step_2.add_next_step(step_3)

        s_c = StepContext(self.test)
        s_c.update_context(step_1, s_c)

        self.interface.If(s_c)
        self.assertEqual(s_c.next_step, step_2)
class TestSeleniumInterface(unittest.TestCase):
    def setUp(self):
        self.interface = SeleniumInterface()

        test = TBBaseTest()
        self.step_context = StepContext(test)

    def test_LaunchDriver_Navigate_FireFox(self):
        step_1 = TBBaseStep(action="LaunchDriver", argument_1="FireFox")
        step_2 = TBBaseStep(action="Navigate",
                            argument_1="http://www.google.com")

        self.step_context.update_context(step_1, self.step_context)

        self.interface.LaunchDriver(self.step_context)

        self.step_context.update_context(step_2, self.step_context)
        self.interface.Navigate(self.step_context)

    def test_LaunchDriver_Navigate_Chrome(self):
        step_1 = TBBaseStep(action="LaunchDriver", argument_1="Chrome")
        step_2 = TBBaseStep(action="Navigate",
                            argument_1="http://www.google.com")

        self.step_context.update_context(step_1, self.step_context)

        self.interface.LaunchDriver(self.step_context)

        self.step_context.update_context(step_2, self.step_context)
        self.interface.Navigate(self.step_context)

    def tearDown(self):
        if self.interface.driver is not None:
            self.interface.driver.close()
Exemplo n.º 6
0
    def test_object_map(self):
        # Prepare objectmap
        object_map = TBBaseObjectMap("test_object_map")
        page1 = TBBasePage("test_page", {"obj": "sample:test"})
        object_map.load_page(page1)

        # Prepare step context
        s_c = StepContext(self.test)
        s_c.step_argument_1 = "test_object_map"
        s_c.step_argument_2 = "test_page"

        self.test.load_object_map(object_map, "test_object_map")

        self.interface.ObjectMap(s_c)

        self.assertIsNotNone(s_c.object_map)
        self.assertEqual(s_c.object_map, object_map)
        self.assertEqual(s_c.object_map.get_current_page(), page1)
Exemplo n.º 7
0
    def run(self):
        """Runs the current test case. 

        Steps taken to run test are

        1. Create empty step context
        2. Load first step
        3. Update context for current step
        4. Run middlewares for 'BEFORE_STEP'
        5. Dispatch step to middlewares
        6. Run middlewares for 'AFTER_STEP'
        7. Update current Step
        8. Go to step 3. Unless last step
        
        Raises:
            ImproperlyConfigured -- If the test is not ready, this is raised
        """

        if not self.ready():
            raise ImproperlyConfigured(
                "Cannot start testcase because the test is not ready")

        step_context = StepContext(self)

        while self.current_step is not None:  # End condition when no more steps
            # Step 1. Update context
            step_context.update_context(self.current_step, step_context)

            # Step 2. Run middlewares for `before_step`
            self.run_middlewares(step_context, MIDDLEWARE_MODE_BEFORE_STEP)

            # Step 3. Run Step
            try:
                self.execute_step(step_context)
            except Exception as e:
                step_context.step_settings["Exception"] = e
                self.run_middlewares(step_context,
                                     MIDDLEWARE_MODE_STEP_FAILURE)
                break

            # Step 4. Run middleswares for `after_step`
            self.run_middlewares(step_context, MIDDLEWARE_MODE_AFTER_STEP)

            # Step 5. Update step
            self.current_step = step_context.next_step

        # Prepare TearDown Steps
        self.current_step = self.tear_down_first_step

        # Step 6. Run TearDown steps
        while self.current_step is not None:
            step_context.update_context(self.current_step, step_context)
            self.run_middlewares(step_context,
                                 MIDDLEWARE_MODE_TEARDOWN_BEFORE_STEP)
            self.execute_step(step_context)
            self.run_middlewares(step_context,
                                 MIDDLEWARE_MODE_TEARDOWN_AFTER_STEP)
            self.current_step = step_context.next_step
Exemplo n.º 8
0
    def test_nested_if_not_equal(self):
        step_1 = TBBaseStep(action="If", argument_1="A", argument_2="B")
        step_2 = TBBaseStep(action="If", argument_1="A", argument_2="A")
        step_3 = TBBaseStep(action="")
        step_4 = TBBaseStep(action="EndIf")  # Skip this EndIf
        step_5 = TBBaseStep(action="EndIf")  # Close on this EndIf

        step_1.add_next_step(step_2)
        step_2.add_next_step(step_3)
        step_3.add_next_step(step_4)
        step_4.add_next_step(step_5)

        s_c = StepContext(self.test)
        s_c.update_context(step_1, s_c)

        self.interface.If(s_c)
        self.assertEqual(step_2.status, StepStatus.SKIPPED)
        self.assertEqual(step_3.status, StepStatus.SKIPPED)
        self.assertEqual(step_4.status, StepStatus.SKIPPED)

        self.assertNotEqual(step_5.status, StepStatus.SKIPPED)
        self.assertEqual(s_c.next_step, step_5)
    def setUp(self):
        self.interface = SeleniumInterface()

        test = TBBaseTest()
        self.step_context = StepContext(test)
class TestSeleniumInterfaceChrome(unittest.TestCase):
    def setUp(self):
        self.interface = SeleniumInterface()

        test = TBBaseTest()
        step_1 = TBBaseStep(action="LaunchDriver", argument_1="Chrome")
        self.step_context = StepContext(test)

        self.step_context.update_context(step_1, self.step_context)
        self.interface.LaunchDriver(self.step_context)

    def test_Type(self):
        step_1 = TBBaseStep(action="Navigate",
                            argument_1="http://www.google.com")
        self.step_context.update_context(step_1, self.step_context)

        self.interface.Navigate(self.step_context)

        step_2 = TBBaseStep(action="Type", argument_2="Testing Search")
        self.step_context.update_context(step_2, self.step_context)
        self.step_context.step_argument_1_mapped = "//input[@name='q']"

        self.interface.Type(self.step_context)

    def test_Click(self):
        step_1 = TBBaseStep(action="Navigate",
                            argument_1="http://www.google.com")
        self.step_context.update_context(step_1, self.step_context)

        self.interface.Navigate(self.step_context)

        step_2 = TBBaseStep(action="Click", argument_1="Search")
        self.step_context.update_context(step_2, self.step_context)
        self.step_context.step_argument_1_mapped = "//input[@name='btnK']"

        self.interface.Click(self.step_context)

    def test_Exist(self):
        step_1 = TBBaseStep(action="Navigate",
                            argument_1="http://www.google.com")
        self.step_context.update_context(step_1, self.step_context)
        self.interface.Navigate(self.step_context)

        step_2 = TBBaseStep(action="Click", argument_1="Search")
        self.step_context.update_context(step_2, self.step_context)
        self.step_context.step_argument_1_mapped = "//input[@name='btnK']"

        self.interface.Exist(self.step_context)

    def test_Exist_fail(self):
        step_1 = TBBaseStep(
            action="Navigate",
            argument_1=
            "http://maxdesign.com.au/jobs/sample-accessibility/05-forms/attribute-disabled.html"
        )
        self.step_context.update_context(step_1, self.step_context)
        self.interface.Navigate(self.step_context)

        step_2 = TBBaseStep(action="Click", argument_1="Search")
        self.step_context.update_context(step_2, self.step_context)
        self.step_context.step_argument_1_mapped = "//button[@text()='five']"

        # Speed up test a bit
        self.interface.set_implicit_wait(0.1)

        with self.assertRaises(Exception):
            self.interface.Exist(self.step_context)

    def test_search_google(self):
        step_1 = TBBaseStep(action="Navigate",
                            argument_1="http://www.google.com")
        self.step_context.update_context(step_1, self.step_context)
        self.interface.Navigate(self.step_context)

        step_2 = TBBaseStep(action="Type", argument_2="Testing Search")
        self.step_context.update_context(step_2, self.step_context)
        self.step_context.step_argument_1_mapped = "//input[@name='q']"
        self.interface.Type(self.step_context)

        step_3 = TBBaseStep(action="Click", argument_1="Search")
        self.step_context.update_context(step_3, self.step_context)
        self.step_context.step_argument_1_mapped = "//input[@name='btnK']"

        self.interface.Click(self.step_context)

        self.assertIn("Testing Search", self.interface.driver.title)

    def tearDown(self):
        if self.interface.driver is not None:
            self.interface.driver.close()
Exemplo n.º 11
0
    def test_execute_step(self):
        self.test.load_interface(SampleInterface, "sample")

        step_1 = TBBaseStep(action="SampleAction")
        step_2 = TBBaseStep(action="SampleActionFail")

        step_1.add_next_step(step_2)

        c_x = StepContext(self.test)
        c_x.update_context(step_1, c_x)
        self.test.execute_step(c_x)  # No interface defined

        c_x = StepContext(self.test)
        c_x.update_context(step_1, c_x)
        c_x.action_interface = "sample"
        self.test.execute_step(c_x)  # Interface defined

        # Interface defined, but not installed
        with self.assertRaises(ImproperlyConfigured):
            c_x = StepContext(self.test)
            c_x.update_context(step_1, c_x)
            c_x.action_interface = "sample_fail"
            self.test.execute_step(c_x)

        # Action not defined
        with self.assertRaises(ImproperlyConfigured):
            c_x = StepContext(self.test)
            c_x.update_context(step_2, c_x)
            self.test.execute_step(c_x)
Exemplo n.º 12
0
 def create_new_context():
     c_x = StepContext(self.test)
     c_x.additional_settings["MiddlewareRun"] = None
     return c_x