def pytest_runtest_makereport(item, call): # if scenarios result has fail if call.when == 'call': logger.attach_debug('logs', logger.test_log.getvalue()) if '_browser' in item.funcargs: logger.attach_selenium_screenshot('Final Screenshot', item.funcargs['_browser'].driver)
def check_count(objects_list, count, objects_name='-'): if isinstance(objects_list, (list, tuple, dict)): with allure.step( 'Проверяем кол-во элементов в %s' % objects_name if objects_name != '-' else 'запрошенных данных'): if len(objects_list) != count: logger.attach_debug('Objects list:', objects_list) raise ObjectDataException( 'Количество элементов в "%s" не совпадает с ожидаемым. Хотели: %s, получили: %s' % (objects_name, count, len(objects_list))) else: raise TypeError("Переданный объект не является (list, tuple, dict)")
def correspond_selected_object(objects, table): """ Функция для проверки сравневания двух джисоно валидных объектов :param objects: объет который проверяем, может быть типа list или dict :param table: объект по которому проверяем objects, может иметь меньше значений чем objects, если проверям list, предпочительнее скидывать tuple (шаблон, таблица; то, как должно быть) :return: None или error """ with allure.step('Сравниваем данные с ожидаемыми значениями'): error = CompareJson()(table, objects) if error: logger.attach_debug('Данные которые проверяем', objects) logger.attach_debug('Данные для проверки', table) raise MismatchError('Данные не сошлись', error)