Exemplo n.º 1
0
 def test_keywords_deprecation(self):
     uk = UserKeyword('Name')
     with warnings.catch_warnings(record=True) as w:
         kws = uk.keywords
         assert_true('deprecated' in str(w[0].message))
     assert_raises(AttributeError, kws.append, Keyword())
     assert_raises(AttributeError, setattr, uk, 'keywords', [])
    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)
Exemplo n.º 3
0
 def test_keywords_deprecation(self):
     uk = UserKeyword('Name')
     uk.body.create_keyword()
     uk.teardown.config(name='T')
     with warnings.catch_warnings(record=True) as w:
         kws = uk.keywords
         assert_equal(len(kws), 2)
         assert_true('deprecated' in str(w[0].message))
     assert_raises(AttributeError, kws.append, Keyword())
     assert_raises(AttributeError, setattr, uk, 'keywords', [])
 def do_step(self, arg):
     current_steps = self.debug_inst.most_recent_step_runner.steps
     next_step = current_steps[0]
     from robot.running.model import Keyword
     new_kwd = Keyword(name='Debug')
     # TODO: insert this keyword into the subsequent step, instead of after it.
     # new_kwd needs to be inserted into next_step.
     import pdb
     pdb.set_trace()
     pass
Exemplo n.º 5
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)
Exemplo n.º 6
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 run_steps(self, steps):
    from robot.api import logger
    logger.error('run_steps')
    logger.error(steps)
    debugLibrary = BuiltIn().get_library_instance('DebugLibrary')

    debugLibrary.most_recent_step_runner = self

    errors = []
    self.steps = []
    self.og_steps = steps
    from robot.api import logger
    logger.error('run steps before trigger check {}'.format(debugLibrary.debug_trigger))
    if debugLibrary.debug_trigger:
        logger.error('run steps debug trigger')
        new_kwd = Keyword(name='Debug')
        self.steps.append(new_kwd)
        debugLibrary.debug_trigger = False

    for step in steps:
        self.steps.append(step)
    while len(self.steps) > 0:
        self.cur_step = self.steps.pop(0)
        try:
            self.run_step(self.cur_step)
        except ExecutionPassed as exception:
            exception.set_earlier_failures(errors)
            raise exception
        except ExecutionFailed as exception:
            errors.extend(exception.get_errors())
            if not exception.can_continue(self._context.in_teardown,
                                          self._templated,
                                          self._context.dry_run):
                break
    if errors:
        raise ExecutionFailures(errors)
Exemplo n.º 8
0
 def start_test(self, test):
     if test:
         test.name = 'Fake_' + str(int(round(time.time() * 1000)))
         test.keywords.clear()
         test.keywords.append(Keyword(name='BuiltIn.No Operation'))
 def do_next(self, arg):
     from robot.running.model import Keyword
     new_kwd = Keyword(name='Debug')
     self.debug_inst.most_recent_step_runner.steps.insert(1, new_kwd)
     return True
Exemplo n.º 10
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)