How to use get_api_keys method in localstack

Best Python code snippet using localstack_python

test_fixture.py

Source:test_fixture.py Github

copy

Full Screen

1import json2import inspect # используем метод для возвращения имени функции3from conftest import do_repeat_it, add_file_log # импортируем декораторы4from app.api_fixture import PetFriends5import pytest6import os7pf = PetFriends()8@pytest.mark.usefixtures("get_name_func") # фикстура для вывода в консоли названия теста9def test_get_api_key(get_api_keys): # в аргументе функции - фикстура для получения ключа10 """ Проверяем, что запрос ключа возвращает статус 200 и содержится слово key"""11 result = get_api_keys12 with open("out_json.json", 'w', encoding='utf8') as my_file:13 my_file.write(f'\n{inspect.currentframe().f_code.co_name}:\n') # Выводим имя функции, как заголовок ответа14 json.dump(result, my_file, ensure_ascii=False, indent=4)15 # Сверяем полученные данные с нашими ожиданиями16 assert 'key' in result17@pytest.mark.usefixtures("get_name_func")18@do_repeat_it # декоратор для вызова функции несколько раз19def test_add_new_pet(get_api_keys, name='King-Kong', animal_type='Monkey', age='188', pet_photo=r'../images/king-kong1.jpg'):20 """Проверяем, что можно добавить питомца с корректными данными"""21 # Получаем полный путь изображения питомца и сохраняем в переменную pet_photo22 pet_photo = os.path.join(os.path.dirname(__file__), pet_photo)23 # Добавляем питомца24 status, result, content, optional = pf.add_new_pet(get_api_keys, name, animal_type, age, pet_photo)25 with open("out_json.json", 'a', encoding='utf8') as my_file:26 my_file.write(f'\n{inspect.currentframe().f_code.co_name}:\n')27 json.dump(result, my_file, ensure_ascii=False, indent=4)28 print('\nContent:', content)29 print('Optional:', optional)30 # Сверяем полученный ответ с ожидаемым результатом31 assert status == 20032 assert result['name'] == name, result['animal_type'] == animal_type and result['age'] == age33@pytest.mark.usefixtures("get_name_func")34@add_file_log # декоратор для получения ответа запроса в файл35def test_get_all_pets(get_api_keys, filter='my_pets'):36 """Проверяем, что запрос возвращает всех питомцев"""37 # Если у пользователя нет загруженных питомцев, пометим тест, как падающий через маркер xfail38 _, my_pets, _, _ = pf.get_list_of_pets(get_api_keys, "my_pets")39 if len(my_pets['pets']) == 0:40 pytest.xfail("Тест рабочий, возможно просто нет загруженных питомцев.")41 status, result, content, optional = pf.get_list_of_pets(get_api_keys, filter)42 with open("out_json.json", 'a', encoding='utf8') as my_file:43 my_file.write(f'\n{inspect.currentframe().f_code.co_name}:\n') # Выводим имя функции, как заголовок ответа44 my_file.write(str(f'\n{status}\n{content}\n{optional}\n'))45 json.dump(result, my_file, ensure_ascii=False, indent=4)46 print('\nContent:', content)47 print('Optional:', optional)48 assert status == 20049 assert len(result['pets']) > 050@pytest.mark.usefixtures("get_name_func")51def test_update_pet_info(get_api_keys, name='Ping-Pong', animal_type='Gorila/Monkey', age='155'):52 """Проверяем возможность обновления информации о питомце"""53 # Получаем ключ auth_key и список своих питомцев54 _, my_pets, _, _ = pf.get_list_of_pets(get_api_keys, "my_pets")55 # Если список не пустой, то пробуем обновить его имя, тип и возраст56 if len(my_pets['pets']) > 0:57 status, result, content, optional = pf.update_pet_info(get_api_keys, my_pets['pets'][0]['id'], name, animal_type, age)58 with open("out_json.json", 'a', encoding='utf8') as my_file:59 my_file.write(f'\n{inspect.currentframe().f_code.co_name}:\n')60 json.dump(result, my_file, ensure_ascii=False, indent=4)61 print('\nContent:', content)62 print('Optional:', optional)63 # Проверяем что статус ответа = 200 и новые данные питомца соответствует заданным64 assert status == 20065 assert result['name'] == name, result['animal_type'] == animal_type and result['age'] == age66 else:67 # если список питомцев пустой, то выкидываем исключение с текстом об отсутствии своих питомцев68 raise Exception("There is no my pets!")69"""Тестируем создание нового питомца без фото"""70@pytest.mark.usefixtures("get_name_func")71def test_add_pet_NOfoto(get_api_keys, name='King-Bongs', animal_type='Monkey-Milk', age='122'):72 # Добавляем питомца73 status, result, content, optional = pf.add_new_pet_nofoto(get_api_keys, name, animal_type, age)74 with open("out_json.json", 'a', encoding='utf8') as my_file:75 my_file.write(f'\n{inspect.currentframe().f_code.co_name}:\n')76 json.dump(result, my_file, ensure_ascii=False, indent=4)77 print('\nContent:', content)78 print('Optional:', optional)79 # Сверяем полученный ответ с ожидаемым результатом80 assert status == 20081 assert result['name'] == name, result['animal_type'] == animal_type and result['age'] == age82 assert result.get('pet_photo') == ''83@pytest.mark.usefixtures("get_name_func")84def test_add_foto_to_pet(get_api_keys, pet_photo=r'../images/king-kong2.jpg'):85 """Тестируем добавление фото к id созданного питомца без фото"""86 # Получаем полный путь изображения питомца и сохраняем в переменную pet_photo87 pet_photo = os.path.join(os.path.dirname(__file__), pet_photo)88 _, my_pets, _, _ = pf.get_list_of_pets(get_api_keys, "my_pets")89 pet_id = my_pets['pets'][0]['id'] # id изменяемого питомца90 # Добавляем фото91 status, result, content, optional = pf.add_pet_photo(get_api_keys, pet_photo, pet_id)92 with open("out_json.json", 'a', encoding='utf8') as my_file:93 my_file.write(f'\n{inspect.currentframe().f_code.co_name}:\n')94 json.dump(result, my_file, ensure_ascii=False, indent=4)95 print('\nContent:', content)96 print('Optional:', optional)97 # Сверяем полученный ответ с ожидаемым результатом98 assert status == 20099 # Если данный текст содержится в полученном ответе, то Passed:100 assert 'data:image/jpeg' in result.get('pet_photo')101@pytest.mark.skip(reason="Путь для фото задан некорректно!")102def test_add_foto_to_pet_skip(get_api_keys, pet_photo=r'../images/king-kong44.jpg'):103 """Тестируем skip (пропуск) по какой-либо причине"""104 # Получаем полный путь изображения питомца и сохраняем в переменную pet_photo105 pet_photo = os.path.join(os.path.dirname(__file__), pet_photo)106 _, my_pets, _, _ = pf.get_list_of_pets(get_api_keys, "my_pets")107 pet_id = my_pets['pets'][0]['id'] # id изменяемого питомца108 # Добавляем фото109 status, result, content, optional = pf.add_pet_photo(get_api_keys, pet_photo, pet_id)110 with open("out_json.json", 'a', encoding='utf8') as my_file:111 my_file.write(f'\n{inspect.currentframe().f_code.co_name}:\n')112 json.dump(result, my_file, ensure_ascii=False, indent=4)113 print('\nContent:', content)114 print('Optional:', optional)115 # Сверяем полученный ответ с ожидаемым результатом116 assert status == 200117 # Если данный текст содержится в полученном ответе, то Passed:118 assert 'data:image/jpeg' in result.get('pet_photo')119"""Тестируем изменение фото, добавленного ранее питомца"""120@pytest.mark.usefixtures("get_name_func")121def test_changes_foto(get_api_keys, pet_photo=r'../images/king-kong3.jpg'):122 # # Получаем полный путь изображения питомца и сохраняем в переменную pet_photo123 pet_photo = os.path.join(os.path.dirname(__file__), pet_photo)124 # Получаем список питомцев и берём id последнего добавленного125 _, my_pets, _, _ = pf.get_list_of_pets(get_api_keys, "my_pets")126 pet_id = my_pets['pets'][0]['id'] # id изменяемого питомца127 value_image1 = my_pets['pets'][0]['pet_photo'] # image изменяемой фотки128 print(f"\nvalue_image1: {len(str(value_image1))} символов: {value_image1}", sep='')129 # Добавляем фото130 status, result, content, optional = pf.add_pet_photo(get_api_keys, pet_photo, pet_id)131 value_image2 = result.get('pet_photo')132 print(f"value_image2: {len(str(value_image2))} символов: {value_image2}")133 with open("out_json.json", 'a', encoding='utf8') as my_file:134 my_file.write(f'\n{inspect.currentframe().f_code.co_name}:\n')135 json.dump(result, my_file, ensure_ascii=False, indent=4)136 print('\nContent:', content)137 print('Optional:', optional)138 # Сверяем полученный ответ с ожидаемым результатом139 assert status == 200140 # Если текст первой фотки не равен тексту второй, то Passed:141 assert value_image1 != value_image2142@pytest.mark.usefixtures("get_name_func_setup", "time_delta_teardown")143class TestDeletePets:144 """Тестируем возможность удаления одного питомца"""145 def test_delete_first_pet(self, get_api_keys):146 # Запрашиваем список своих питомцев147 _, my_pets, _, _ = pf.get_list_of_pets(get_api_keys, "my_pets")148 # Проверяем - если список своих питомцев пустой, то добавляем нового и опять запрашиваем список своих питомцев149 if len(my_pets['pets']) == 0:150 pf.add_new_pet(get_api_keys, "King-Kong", "Gorila", "133", r'../images/king-kong2.jpg')151 _, my_pets, _, _ = pf.get_list_of_pets(get_api_keys, "my_pets")152 # Берём id первого питомца из списка и отправляем запрос на удаление153 pet_id = my_pets['pets'][0]['id']154 status, result, content, optional = pf.delete_pet(get_api_keys, pet_id)155 with open("out_json.json", 'a', encoding='utf8') as my_file:156 my_file.write(f'\n{inspect.currentframe().f_code.co_name}:\n')157 json.dump(result, my_file, ensure_ascii=False, indent=4)158 print('\nContent:', content)159 print('Optional:', optional)160 # Ещё раз запрашиваем список своих питомцев161 _, my_pets, _, _ = pf.get_list_of_pets(get_api_keys, "my_pets")162 # Проверяем что статус ответа равен 200 и в списке питомцев нет id удалённого питомца163 assert status == 200164 assert pet_id not in my_pets.values()165 """Тестируем удаление всех питомцев"""166 def test_delete_all_pets(self, get_api_keys):167 # Получаем ключ auth_key и запрашиваем список своих питомцев168 _, my_pets, _, _ = pf.get_list_of_pets(get_api_keys, "my_pets")169 with open("out_json.json", 'a', encoding='utf8') as my_file:170 my_file.write(f'\n{inspect.currentframe().f_code.co_name}/текущий список питомцев:\n')171 json.dump(my_pets, my_file, ensure_ascii=False, indent=4)172 pet_id = my_pets['pets'][0]['id']173 # Получаем в цикле id всех питомцев из списка и отправляем запрос на удаление:174 for id_pet in my_pets["pets"]:175 pf.delete_pet(get_api_keys, id_pet["id"])176 # Ещё раз запрашиваем список питомцев:177 status, my_pets, content, optional = pf.get_list_of_pets(get_api_keys, "my_pets")178 with open("out_json.json", 'a', encoding='utf8') as my_file:179 my_file.write(f'\n{inspect.currentframe().f_code.co_name}/список после удаления:\n')180 json.dump(my_pets, my_file, ensure_ascii=False, indent=4)181 print('\nContent:', content)182 print('Optional:', optional)183 assert status == 200...

Full Screen

Full Screen

test_pet_friends.py

Source:test_pet_friends.py Github

copy

Full Screen

1from api import PetFriends2from settigs import *3from conftest import *4import pytest5import os6import json7import requests8import inspect # используем метод для возвращения имени функции9pf = PetFriends()10def generate_string(n):11 return "x" * n12def russian_chars():13 return 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'14def chinese_chars():15 return '的一是不了人我在有他这为之大来以个中上们'16def special_chars():17 return '|\\/!@#$%^&*()-_=+`~?"№;:[]{}'18@pytest.fixture(autouse=True)19def ket_api_key():20 #""" Проверяем, что запрос api-ключа возвращает статус 200 и в результате содержится слово key"""21 # Отправляем запрос и сохраняем полученный ответ с кодом статуса в status, а текст ответа в result22 status, pytest.key = pf.get_api_key(valid_email, valid_password)23 # Сверяем полученные данные с нашими ожиданиями24 assert status == 20025 assert 'key' in pytest.key26 yield27@pytest.mark.parametrize("filter",28 [29 generate_string(255)30 , generate_string(1001)31 , russian_chars()32 , russian_chars().upper()33 , chinese_chars()34 , special_chars()35 , 12336 ],37 ids =38 [39 '255 symbols'40 , 'more than 1000 symbols'41 , 'russian'42 , 'RUSSIAN'43 , 'chinese'44 , 'specials'45 , 'digit'46 ])47# negative test48def test_get_all_pets_with_negative_filter(filter):49 pytest.status, result, _, _ = pf.get_list_of_pets(pytest.key, filter)50 # Проверяем статус ответа51 assert pytest.status == 40052@pytest.mark.parametrize("filter",53 ['', 'my_pets'],54 ids=['empty string', 'only my pets'])55# pozitive test56def test_get_all_pets_with_valid_key(filter):57 pytest.status, result, _, _ = pf.get_list_of_pets(pytest.key, filter)58 # Проверяем статус ответа59 assert pytest.status == 20060 assert len(result['pets']) > 061# @pytest.fixture(autouse=True)62# def ket_api_key():63# status, pytest.key = pf.get_api_key(valid_email, valid_password)64# assert status == 20065# assert 'key' in pytest.key66#67# yield68#69# assert pytest.status == 20070@pytest.mark.parametrize("filter", ['', 'my_pets'], ids= ['empty string', 'only my pets'])71def test_get_all_pets_with_valid_key(filter):72 pytest.status, result, _, _ = pf.get_list_of_pets(pytest.key, filter)73 assert len(result['pets']) > 074@pytest.mark.parametrize("name", ['', generate_string(255), russian_chars(), '123'],75 ids=['empty', '255 symbols', 'russian', 'digit'])76@pytest.mark.parametrize("animal_type", ['', generate_string(255), russian_chars(), '123'],77 ids=['empty', '255 symbols', 'russian', 'digit'])78@pytest.mark.parametrize("age", ['', '-1', '0', '1', '100', '1.5', chinese_chars()],79 ids=['empty', 'negative', 'zero', 'min', 'greater than max', 'float', 'chinese'])80def test_add_new_pet_simple(name, animal_type, age):81 """Проверяем, что можно добавить питомца с различными данными"""82 # Добавляем питомца83 pytest.status, result = pf.add_new_pet_simple(pytest.key, name, animal_type, age)84 assert pytest.status == 20085 assert result['name'] == name86 assert result['age'] == age87 assert result['animal_type'] == animal_type88def test_get_api_key(get_api_keys):89 result = get_api_keys90 with open("out_json.json", 'w', encoding='utf8') as my_file:91 my_file.write(f'\n{inspect.currentframe().f_code.co_name}:\n')92 json.dump(result, my_file, ensure_ascii=False, indent=4)93 assert 'key' in result94 def test_get_not_api_key(self, email=invalid_email, password=invalid_password):95 # тест на некорректные логин с паролем96 status, result = self.pf.get_api_key(email, password)97 assert status == 40398def tests_get_all_pets(get_api_keys, filter=''):99 status, result, content, optional = pf.get_list_of_pets(get_api_keys, filter)100 print('\nContent:', content)101 print('Optional:', optional)102 assert status == 200103 assert len(result['pets']) > 0104def tests_get_my_filter_pets(get_api_keys, filter='my_pets'):105 try:106 status, result, content, optional = pf.get_list_of_pets(get_api_keys, filter)107 with open("out_json.json", 'a', encoding='utf8') as my_file:108 my_file.write(f'\n{inspect.currentframe().f_code.co_name}:\n') # Выводим имя функции, как заголовок ответа109 my_file.write(str(f'\n{status}\n{content}\n{optional}\n'))110 json.dump(result, my_file, ensure_ascii=False, indent=4)111 assert status == 200112 assert len(result['pets']) > 0113 except:114 print(' status = ', status)115 print('There is no my pets')116def tests_add_new_pet(get_api_keys, name='pig', animal_type='swan', age='2', pet_photo='..\images\cor.jpg'):117 pet_photo = os.path.join(os.path.dirname(__file__), pet_photo)118 status, result = pf.add_new_pet(get_api_keys, name, animal_type, age, pet_photo)119 assert status == 200120 assert result['name'] == name121def tests_put_my_pet(get_api_keys, name='сердце', animal_type='человечье', age=60):122 _, myPets, _, _ = pf.get_list_of_pets(get_api_keys, "my_pets")123 if len(myPets['pets']) > 0:124 status, result = pf.update_pet_info(get_api_keys, myPets['pets'][0]['id'], name, animal_type, age)125 assert status == 200126 assert result['name'] == name127 else:128 print("There is no my pets")129def tests_add_my_pet(get_api_keys, name='svin', animal_type='suka', age=555):130 status, result = pf.add_new_pet_simple(get_api_keys, name, animal_type, age)131 assert status == 200132 assert result['name'] == name133 def tests_add_my_negat_pet(self, name='svin', animal_type='pig', age=5):134 # добавляем пета с использованием ключа, забитого в settigs.py.135 # В случае неправильного ключа тест выполняется с указанием status_code и incorrect auth_key136 try:137 status, result = self.pf.aadd_new_pet_simple(auth_key, name, animal_type, age)138 assert status == 200139 assert result['name'] == name140 except:141 print('incorrect auth_key')142def test_delet_my_one_pet(get_api_keys):143 # Убираем одного пета (по индексу "0")144 status, resalt, _, _ = pf.get_list_of_pets(get_api_keys, "my_pets")145 if len(resalt['pets']) > 0:146 pet_id = resalt['pets'][0]['id']147 status, _ = pf.delete_pet(get_api_keys, pet_id)148 assert status == 200149 assert pet_id not in resalt.values()150 else:151 print(' status = ', status)152 print("There is no my pets")153def test_delet_my_all_pets(get_api_keys):154 # Убираем всех своих петов155 status, myPets, _, _ = pf.get_list_of_pets(get_api_keys, "my_pets")156 for i in range(len(myPets['pets'])):157 pet_id = myPets['pets'][i]['id']158 status, _ = pf.delete_pet(get_api_keys, pet_id)159 try:160 assert status == 200161 assert pet_id not in myPets.values()162 except:163 print(' status = ', status)164 print("There is no my pets")165@pytest.mark.parametrize("name"166 , [generate_string(255), generate_string(1001), russian_chars(), russian_chars().upper(), chinese_chars(),167 special_chars(), '123']168 , ids=['255 symbols', 'more than 1000 symbols', 'russian', 'RUSSIAN', 'chinese', 'specials', 'digit'])169@pytest.mark.parametrize("animal_type"170 , [generate_string(255), generate_string(1001), russian_chars(), russian_chars().upper(), chinese_chars(),171 special_chars(), '123']172 , ids=['255 symbols', 'more than 1000 symbols', 'russian', 'RUSSIAN', 'chinese', 'specials', 'digit'])173@pytest.mark.parametrize("age", ['1'], ids=['min'])174def test_add_new_pet_simple(name, animal_type, age):175 """Проверяем, что можно добавить питомца с различными данными"""176 # Добавляем питомца177 pytest.status, result = pf.add_new_pet_simple(pytest.key, name, animal_type, age)178 # Сверяем полученный ответ с ожидаемым результатом179 assert pytest.status == 200180 assert result['name'] == name181 assert result['age'] == age182 assert result['animal_type'] == animal_type183@pytest.mark.parametrize("name", [''], ids=['empty'])184@pytest.mark.parametrize("animal_type", [''], ids=['empty'])185@pytest.mark.parametrize("age",186 ['', '-1', '0', '100', '1.5', '2147483647', '2147483648', special_chars(), russian_chars(),187 russian_chars().upper(), chinese_chars()]188 , ids=['empty', 'negative', 'zero', 'greater than max', 'float', 'int_max', 'int_max + 1', 'specials',189 'russian', 'RUSSIAN', 'chinese'])190def test_add_new_pet_simple_negative(name, animal_type, age):191 # Добавляем питомца192 pytest.status, result = pf.add_new_pet_simple(pytest.key, name, animal_type, age)193 # Сверяем полученный ответ с ожидаемым результатом...

Full Screen

Full Screen

test_api.py

Source:test_api.py Github

copy

Full Screen

...3from weasyl import api4from weasyl.test import db_utils5@pytest.mark.usefixtures('db')6class ApiTestCase(unittest.TestCase):7 def test_get_api_keys(self):8 user = db_utils.create_user()9 self.assertEqual(0, api.get_api_keys(user).rowcount)10 token = "some token"11 db_utils.create_api_key(user, token)12 self.assertEqual(1, api.get_api_keys(user).rowcount)13 self.assertEqual(token, api.get_api_keys(user).first()["token"])14 def test_add_api_key(self):15 user = db_utils.create_user()16 api.add_api_key(user, "")17 self.assertEqual(1, api.get_api_keys(user).rowcount)18 def test_delete_api_keys(self):19 user = db_utils.create_user()20 token = "some token"21 db_utils.create_api_key(user, token)22 api.delete_api_keys(user, [token])...

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run localstack automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful