def test_screenshot(self): with allure.step(f"Шаг 1. Проверка открытия страницы {Urls.TEST_STAND_URL}"): settings = SettingsParser().get_test_settings() main_page = MainPage(settings) assert_that(main_page.is_opened(), equal_to(True), "Страница не открылась") with allure.step("Шаг 2. Ввод случайно сгенерированног текста"): text = TestHelper.get_random_string(self.__LEN_STRING) main_page.frame.send_text(text) assert_that(main_page.frame.get_text(), equal_to(text), "Текст не совпадает") with allure.step("Шаг 3. Проверка, что введенный текст жирный"): main_page.frame.do_text_bold() assert_that(main_page.frame.is_text_bold(), equal_to(True), "Введенный текст не жирный") with allure.step("Шаг 4. Создание скриншота"): Screenshooter.set_session_screen_dir() Screenshooter.take_screenshot() result = cloudinary.uploader.upload(os.path.join(Screenshooter.get_screen_session_dir(), Screenshooter.get_screen_file_name()), public_id=CloudinaryConfig.PUBLIC_ID) api = APIUtils(result['url']) api.get_image() path_orig_img = os.path.join(Screenshooter.get_screen_session_dir(), Screenshooter.get_screen_file_name()) path_download_img = os.path.join(Screenshooter.get_screen_session_dir(), settings['screen_file_name']) assert_that(TestHelper.check_image(path_orig_img, path_download_img), equal_to(True), "Скриншоты неидентичны")
def test_rest_api_get_all_posts(self): with allure.step("Шаг 1. Проверка статус кода при запросе GET /posts"): api = APIUtils(Urls.TEST_STAND_URL) response = api.get(Urls.ALL_POSTS) assert_that(api.get_status_code(), equal_to(SC.STATUS_CODE_OK), f"Статус код отличается от {SC.STATUS_CODE_OK}") with allure.step("Шаг 2. Проверка расширения файла"): posts_content = api.get_content_json() assert_that(TestHelper.check_json(posts_content), equal_to(True), f"Расширение файла не {EX.JSON}") with allure.step("Шаг 3. Проверк, что json файл отсортирован по id"): posts_models = TestHelper.add_post_instance(posts_content) assert_that(TestHelper.check_posts(posts_models), equal_to(True), "Список не отсортирован")
def test_rest_api_get_one_user(self): with allure.step( "Шаг 1. Проверка статус кода при запросе GET /users/5"): api = APIUtils(Urls.TEST_STAND_URL) response = api.get(Urls.USERS.format(id='5')) assert_that(api.get_status_code(), equal_to(SC.STATUS_CODE_OK), f"Статус код отличается от {SC.STATUS_CODE_OK}") with allure.step( "Шаг 2. Проверка, что данные полученные на прошлом шаге соотвествуют данным с запросом GET /users/5" ): another_user_content = api.get_content_json() another_user_model = TestHelper.add_user_instance( another_user_content) assert_that( another_user_model, equal_to(UserStand.USER), "Данные пользователя не соответствуют данным полученным на прошлом шаге" )
def test_rest_api_get_all_users(self): with allure.step("Шаг 1. Проверка статус кода при запросе GET /users"): api = APIUtils(Urls.TEST_STAND_URL) response = api.get(Urls.ALL_USERS) assert_that(api.get_status_code(), equal_to(SC.STATUS_CODE_OK), f"Статус код отличается от {SC.STATUS_CODE_OK}") with allure.step("Шаг 2. Проверка расширения файла"): assert_that(api.get_headers(response, TestSettings.HEADER), contains_string(EX.JSON), f"Расширение файла не {EX.JSON}") with allure.step( f"Шаг 3. Проверка, что пользователь с id{TestSettings.USER_CHELSEY_DIETRICH['id']} существует" ): users = api.get_content_json() users_models = TestHelper.add_user_instance(users) user = TestHelper.add_user_instance( TestSettings.USER_CHELSEY_DIETRICH) UserStand.USER = user assert_that( users_models[int(TestSettings.USER_CHELSEY_DIETRICH['id']) - 1], equal_to(user), f"Пользователь с id{TestSettings.USER_CHELSEY_DIETRICH['id']} имеет другие данные" )
def test_xml_with_rest_api(self): with allure.step("Шаг 1. Проверить статус код"): settings = SettingsParser().get_test_settings() api = APIUtils(settings['request']) response = api.get() assert_that(api.get_status_code(), equal_to(SC.STATUS_CODE_OK), f"Статус код отличается от {SC.STATUS_CODE_OK}") with allure.step("Шаг 2. Проверить расширение файла"): TestHelper().download_xml(response) assert_that(TestHelper.is_xml_extension(settings['xml']), equal_to(True), f"Расширение файла не {EX.XML_EXTENSION}") xml = XmlParser.convert_xml_to_dict(settings['xml']) with allure.step("Шаг 3. Проверить что xml отсортирован"): books = TestHelper.add_book_instance(xml) assert_that(TestHelper.check_books_id(books), equal_to(True), "Список не отсортирован") with allure.step("Шаг 4. Проверить книги с высокой и низкой ценой"): max_price = max([x.get_price() for x in books]) min_price = min([x.get_price() for x in books]) assert_that(max_price, is_not(equal_to(min_price)), "Цены совпадают")
def test_rest_api_get_one_post_fail(self): with allure.step( "Шаг 1. Проверка статус кода при запросе GET /posts/150"): api = APIUtils(Urls.TEST_STAND_URL) api.get(Urls.POST.format(id='150')) assert_that(api.get_status_code(), equal_to(SC.STATUS_CODE_OK), f"Статус код отличается от {SC.STATUS_CODE_OK}") with allure.step("Шаг 2. Проверка, что тело ответа пустое"): post_150_content = api.get_content_json() assert_that(post_150_content, empty(), "Тело запроса не пустое")
def test_rest_api_post_all_posts(self): with allure.step( "Шаг 1. Проверка статус кода при запросе POST /posts"): api = APIUtils(Urls.TEST_STAND_URL) data = { "title": self.EXP_TITLE, "body": self.EXP_STRING, "userId": Urls.USER_ID } api.post(Urls.ALL_POSTS, data) assert_that(api.get_status_code(), equal_to(SC.STATUS_CODE_CREATED), f"Статус код отличается от {SC.STATUS_CODE_CREATED}") with allure.step("Шаг 2. Проверка отправленных данных методом POST"): post_content = api.get_content_json() post_model = TestHelper.add_post_instance(post_content) assert_that(data['title'], equal_to(post_model.get_title()), "title не соответствует переданным данным") assert_that(data['body'], equal_to(post_model.get_body()), "body не соответствует переданным данным") assert_that(data['userId'], equal_to(post_model.get_userId()), "userId не соответствует переданным данным") assert_that(post_model.get_id(), is_not(empty()), "id пуст")
def test_rest_api_get_one_post(self): with allure.step( "Шаг 1. Проверка статуса кода при запросе GET /posts/99"): api = APIUtils(Urls.TEST_STAND_URL) api.get(Urls.POST.format(id='99')) assert_that(api.get_status_code(), equal_to(SC.STATUS_CODE_OK), f"Статус код отличается от {SC.STATUS_CODE_OK}") with allure.step("Шаг 2. Проверка userId"): post_99_content = api.get_content_json() post_99_model = TestHelper.add_post_instance(post_99_content) assert_that(post_99_content['userId'], equal_to(post_99_model.get_userId()), "userId не совпадают") with allure.step("Шаг 3. Проверка id"): assert_that(post_99_content['id'], equal_to(post_99_model.get_id()), "id не совпадают") with allure.step("Шаг 4. Проверка, что title и body не пустые"): assert_that(post_99_model.get_title(), is_not(empty()), "title не пуст") assert_that(post_99_model.get_body(), is_not(empty()), "body не пуст")
def test_basic_authorization(self): with allure.step(f"Прохождение авторизации на ресурсе {Urls.TEST_STAND_URL}"): settings = SettingsParser().get_test_settings() api = APIUtils(Urls.TEST_STAND_URL) api.get(auth=(settings['login'], settings['password'])) assert_that(settings['template'], equal_to(api.get_content_json()), "Данные не совпадают")