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])
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)
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)
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])
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])
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)
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_deprecation(self): with warnings.catch_warnings(record=True) as w: Keywords() assert_true('deprecated' in str(w[0].message))
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_teardown(self): assert_equal(Keywords().teardown, None) teardown = Keyword(type='teardown') assert_true(Keywords(keywords=[Keyword(), teardown]).teardown is teardown)
def test_setup(self): assert_equal(Keywords().setup, None) setup = Keyword(type='setup') assert_true(Keywords(keywords=[setup, Keyword(), Keyword()]).setup is setup)
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)
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)