def start_suite(self, suite, result):

        # Сохраняем значение переданное в аргументах, для параллельного запуска, в переменную self.type_sites.
        if self.args.find("parallel") != -1:
            self.type_sites = "parallel"

        # Формируем общий список сайтов для параллельного прогона. Настраиваем его функционал.
        # Список может быть динамический, если пришел аргумент 'parallel' или статический, если пришел аргумент 'vse'.
        if self.type_sites == 'parallel' or self.type_sites == 'vse':

            # Получаем кол-во динамических сайтов для параллельного прогона.
            if self.type_sites == 'parallel':
                parametrs = self.args.split(':')
                number_sites = int(parametrs[1])
                self.sites = get_sites_list_from_doorway(number_sites)

            # Получаем номер тест сьюта из названия
            result = re.findall(r'\d+', suite.name)
            if not result:
                return
            test_suite_number = int(result[0])

            # Вызываем функцию возвращающую динамический список сайтов, по указанному кол-ву.
            site_list = get_sites_list_from_doorway(number_sites)

            # Берем из полученного списка сайтов, равную часть, с позиции, равной номеру тестсьюта
            count = len(site_list) // 10
            self.sites = site_list[test_suite_number *
                                   count:test_suite_number * count + count]

        # Сохраняем полученный список сайтов, в переменную sites.
        sites = self.sites

        # Создаем объект TestCase, в него будет записывать TestCase, parent - текущий TestSuite
        test_cases = TestCases(parent=suite)

        for site_url in sites:
            # Получаем переменные с описанием теста и текстом для тегов теста.
            test_name = BuiltIn().get_variable_value('${test_name}')
            test_tags = BuiltIn().get_variable_value('${test_tags}')

            # Создаем Keyword и записываем в список Keywords
            if test_name is None:
                pass
            else:
                ks = Keywords()
                ks.append(Keyword(name='Test run', args=(site_url, )))

                # Создаем TestCase с полученным именем теста и текстом для тегов теста. И добавляем к нему созданный Keyword.
                test_case = TestCase(name=f'Test {test_name} on {site_url}',
                                     tags=f'{test_tags}')
                test_case.keywords = ks

                # Добавляем TestCase к TestCases
                test_cases.append(test_case)

        # Добавлем созданный список TestCases к текущему TestSuite
        suite.tests.extend(test_cases)
 def test_setup_is_removed_when_set_to_none(self):
     kw = Keyword()
     kws = Keywords(keywords=[Keyword(type='setup'), kw])
     kws.setup = None
     assert_none(kws.setup)
     assert_equal(list(kws), [kw])
     kws.setup = None
     assert_none(kws.setup)
     assert_equal(list(kws), [kw])
 def test_set_setup(self):
     s1, s2, kw = Keyword(type='setup'), Keyword(type='setup'), Keyword()
     kws = Keywords(keywords=[kw])
     kws.setup = s1
     assert_true(kws.setup is s1)
     assert_equal(list(kws), [s1, kw])
     kws.setup = s2
     assert_true(kws.setup is s2)
     assert_equal(list(kws), [s2, kw])
Beispiel #4
0
 def test_set_teardown(self):
     kw, t1, t2 = Keyword(), Keyword(type='teardown'), Keyword(type='teardown')
     kws = Keywords(keywords=[kw])
     kws.teardown = t1
     assert_true(kws.teardown is t1)
     assert_equal(list(kws), [kw, t1])
     kws.teardown = t2
     assert_true(kws.teardown is t2)
     assert_equal(list(kws), [kw, t2])
Beispiel #5
0
 def test_set_setup(self):
     s1, s2, kw = Keyword(type='setup'), Keyword(type='setup'), Keyword()
     kws = Keywords(keywords=[kw])
     kws.setup = s1
     assert_true(kws.setup is s1)
     assert_equal(list(kws), [s1, kw])
     kws.setup = s2
     assert_true(kws.setup is s2)
     assert_equal(list(kws), [s2, kw])
Beispiel #6
0
 def test_setup_is_removed_when_set_to_none(self):
     kw = Keyword()
     kws = Keywords(keywords=[Keyword(type='setup'), kw])
     kws.setup = None
     assert_none(kws.setup)
     assert_equal(list(kws), [kw])
     kws.setup = None
     assert_none(kws.setup)
     assert_equal(list(kws), [kw])
 def test_teardown_is_removed_when_set_to_none(self):
     kw = Keyword()
     kws = Keywords(keywords=[kw, Keyword(type='teardown')])
     kws.teardown = None
     assert_none(kws.teardown)
     assert_equal(list(kws), [kw])
     kws.teardown = None
     assert_none(kws.teardown)
     assert_equal(list(kws), [kw])
Beispiel #8
0
 def test_teardown_is_removed_when_set_to_none(self):
     kw = Keyword()
     kws = Keywords(keywords=[kw, Keyword(type='teardown')])
     kws.teardown = None
     assert_none(kws.teardown)
     assert_equal(list(kws), [kw])
     kws.teardown = None
     assert_none(kws.teardown)
     assert_equal(list(kws), [kw])
 def test_set_teardown(self):
     kw, t1, t2 = Keyword(), Keyword(type='teardown'), Keyword(type='teardown')
     kws = Keywords(keywords=[kw])
     kws.teardown = t1
     assert_true(kws.teardown is t1)
     assert_equal(list(kws), [kw, t1])
     kws.teardown = t2
     assert_true(kws.teardown is t2)
     assert_equal(list(kws), [kw, t2])
Beispiel #10
0
 def test_iteration(self):
     kws = [
         Keyword(type='setup'),
         Keyword(),
         Keyword(),
         Keyword(type='teardown')
     ]
     assert_equal(list(Keywords(keywords=kws)), kws)
     assert_equal(list(Keywords(keywords=kws).all), kws)
     assert_equal(list(Keywords(keywords=kws).normal), kws[1:-1])
Beispiel #11
0
    def test_setting_non_setup_keyword_to_setup_is_not_supported(self):

        kws = Keywords(keywords=[Keyword(type='setup'), Keyword(), Keyword()])
        orig = list(kws)
        assert_raises_with_msg(
            TypeError, "Setup keyword type must be 'setup', got 'kw'.",
            setattr, kws, 'setup', Keyword())
        assert_equal(list(kws), orig)
Beispiel #12
0
 def test_setting_non_teardown_keyword_to_teardown_is_not_supported(self):
     kws = Keywords(keywords=[Keyword(), Keyword(type='teardown')])
     orig = list(kws)
     assert_raises_with_msg(
         TypeError,
         "Teardown keyword type must be 'teardown', got 'setup'.", setattr,
         kws, 'teardown', Keyword(type='setup'))
     assert_equal(list(kws), orig)
Beispiel #13
0
    def start_suite(self, suite, result):
        """
        Генерируем тест кейсы. Для каждого сайта отдельный тест кейс, который запустит нужный кейворд с параметроми
        Создаем объект TestCases и наполняем его TestCase, в котором задаем нужный Keyword
        """
        site_list = ['https://arena.com', 'https://luzhniki.com',
                       'https://theatreallascala.com', 'https://crocus-city.me', 'https://bdt.com']
        # Создаем объект TestCase, в него будет записывать TestCase, parent - текущий TestSuite
        test_cases = TestCases(parent=suite)
        for site_url in site_list:
            site_host = site_url.split('//')

            # Получаем переменные с описанием теста и текстом для тегов теста.
            test_name = BuiltIn().get_variable_value('${test_name}')
            test_tags = BuiltIn().get_variable_value('${test_tags}')

            def switch_keyword(argument):
                switcher = {
                    "arena.com": "билеты в Арена",
                    "luzhniki.com": "Билеты на стадион «Лужники»",
                    "theatreallascala.com": "Билеты в Teatro alla Scala",
                    "crocus-city.me": "https://crocus-city.me",
                    "bdt.com": "https://bdt.com"
                }
                return switcher.get(argument, "Invalid host")

            if test_name is None:
                pass
            else:
                # Создаем Keyword и записываем в список Keywords
                ks = Keywords()
                ks.append(Keyword(name='Test run', args=(switch_keyword(site_host[1]), site_url)))

                # Создаем TestCase с нужным именем и добавлеям к нему созданный Keyword
                test_case = TestCase(name=f'{test_name} {urlparse(site_url).hostname} из рекламы в поиске',
                                     tags=f'{test_tags}')
                test_case.keywords = ks

                # Добавляем TestCase к TestCases
                test_cases.append(test_case)

                print(test_cases)

        # Добавляем созданный список TestCases к текущему TestSuite
        suite.tests.extend(test_cases)
Beispiel #14
0
    def start_suite(self, suite, result):

        # Создаем переменную с общим паролем, для всех аккаунтов. Передаем ее в кейворд проверяющий логин в бинтранете, по разным ролям.
        BuiltIn().set_suite_variable("${password_for_all_accaunts}",
                                     "your_password")
        # Создаем переменную для разделения типов теста по проверке авторизации. Общая проверка или отдельная по разным ролям.
        BuiltIn().set_suite_variable("${type_check}", f'{self.type_check}')

        # Если в аргументах запуска было передано название роли отличное от 'common', то создам необходимые переменные, для данного типа теста.
        if self.accaunt != 'common':
            # Создаем переменную с название роли, для авторизации. Переданную в аргументах запуска.
            BuiltIn().set_suite_variable("${user_name}", f'{self.accaunt}')
            # Создаем переменную с текстом, для проверки по каждой из ролей.
            BuiltIn().set_suite_variable("${text_accaunt_value}",
                                         f'{self.text_accaunt}')

        site_url = "http://site.com/accounts/login/?next=/dev/"

        if 'Test Authorization' in suite.name:
            # Создаем объект TestCase, в него будет записывать TestCase, parent - текущий TestSuite
            test_cases = TestCases(parent=suite)

        # Получаем переменные с описанием теста и текстом для тегов теста.
        test_name = BuiltIn().get_variable_value('${test_name}')
        test_tags = BuiltIn().get_variable_value('${test_tags}')

        if 'Test Authorization' in suite.name:
            # Создаем Keyword и записываем в список Keywords
            if test_name is None:
                pass
            else:
                ks = Keywords()
                ks.append(Keyword(name='Test run', args=(site_url, )))

                # Создаем TestCase с полученным именем теста и текстом для тегов теста. И добавляем к нему созданный Keyword.
                test_case = TestCase(
                    name=f'Test {test_name}: {self.text_accaunt}',
                    tags=f'{test_tags}')
                test_case.keywords = ks

                # Добавляем TestCase к TestCases
                test_cases.append(test_case)

            # Добавлем созданный список TestCases к текущему TestSuite
            suite.tests.extend(test_cases)
 def test_for_loops_are_included(self):
     kws = [Keyword(type='for'), Keyword(), Keyword(type='foritem')]
     assert_equal(list(Keywords(keywords=kws).normal), kws)
     assert_equal(list(Keywords(keywords=kws).all), kws)
 def test_setup(self):
     assert_equal(Keywords().setup, None)
     setup = Keyword(type='setup')
     assert_true(Keywords(keywords=[setup, Keyword(), Keyword()]).setup is setup)
 def test_teardown(self):
     assert_equal(Keywords().teardown, None)
     teardown = Keyword(type='teardown')
     assert_true(Keywords(keywords=[Keyword(), teardown]).teardown is teardown)
Beispiel #18
0
 def test_get_setup(self):
     assert_none(Keywords().setup)
     setup = Keyword(type='setup')
     kws = Keywords(keywords=[setup, Keyword(), Keyword()])
     assert_true(kws.setup is setup)
Beispiel #19
0
 def test_deprecation(self):
     with warnings.catch_warnings(record=True) as w:
         Keywords()
         assert_true('deprecated' in str(w[0].message))
Beispiel #20
0
    def start_suite(self, suite, result):

        # Сохраняем значение переданное в аргументах, для параллельного запуска, в переменную self.type_sites.
        if self.args.find("parallel") != -1:
            self.type_sites = "parallel"

        # Формируем общий список сайтов для параллельного прогона. Настраиваем его функционал.
        # Список может быть динамический, если пришел аргумент 'parallel' или статический, если пришел аргумент 'vse'.
        if self.type_sites == 'parallel' or self.type_sites == 'vse':

            # Получаем кол-во динамических сайтов для параллельного прогона.
            if self.type_sites == 'parallel':
                parametrs = self.args.split(':')
                number_sites = int(parametrs[1])
                self.sites = get_sites_list_from_doorway(number_sites)

            # Получаем номер тест сьюта из названия
            result = re.findall(r'\d+', suite.name)
            if not result:
                return
            test_suite_number = int(result[0])

            # Вызываем функцию возвращающую динамический список сайтов, по указанному кол-ву.
            site_list = get_sites_list_from_doorway(number_sites)

            # Берем из полученного списка сайтов, равную часть, с позиции, равной номеру тестсьюта
            count = len(site_list) // 10
            self.sites = site_list[test_suite_number *
                                   count:test_suite_number * count + count]

        # Сохраняем полученный список сайтов, в переменную sites.
        sites = self.sites

        # Создаем объект TestCase, в него будет записывать TestCase, parent - текущий TestSuite
        test_cases = TestCases(parent=suite)

        for site_url in sites:
            # Для формирования данных, по автотесту проверки рекламы в поиске.
            if 'Test Doorway Advertising' in suite.name:
                site_host = site_url.split('//')

                def switch_keyword(argument):
                    switcher = {
                        "arena.com": "билеты в Арена",
                        "luzhniki.com": "Билеты на стадион «Лужники»",
                        "theatreallascala.com": "Билеты в Teatro alla Scala",
                        "crocus-city.me": "https://crocus-city.me",
                        "bdt.com": "https://bdt.com"
                    }
                    return switcher.get(argument, "Invalid host")

            # Получаем переменные с описанием теста и текстом для тегов теста.
            test_name = BuiltIn().get_variable_value('${test_name}')
            test_tags = BuiltIn().get_variable_value('${test_tags}')

            # Создаем Keyword и записываем в список Keywords
            if test_name is None:
                pass
            else:
                ks = Keywords()

                # Для формирования данных, по автотесту проверки рекламы в поиске.
                if 'Test Doorway Advertising' in suite.name:
                    ks.append(
                        Keyword(name='Test run',
                                args=(switch_keyword(site_host[1]), site_url)))
                else:
                    ks.append(Keyword(name='Test run', args=(site_url, )))

                # Создаем TestCase с полученным именем теста и текстом для тегов теста. И добавляем к нему созданный Keyword.
                # Для формирования данных, по автотесту проверки рекламы в поиске.
                if 'Test Doorway Advertising' in suite.name:
                    test_case = TestCase(
                        name=
                        f'{test_name} {urlparse(site_url).hostname} из рекламы в поиске',
                        tags=f'{test_tags}')
                else:
                    test_case = TestCase(
                        name=f'Test {test_name} on {site_url}',
                        tags=f'{test_tags}')

                test_case.keywords = ks

                # Добавляем TestCase к TestCases
                test_cases.append(test_case)

        # Добавлем созданный список TestCases к текущему TestSuite
        suite.tests.extend(test_cases)