Skip to content

k4ent/Auto-testing-test_petstore_api.py

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

BASE_URL = "https://petstore.swagger.io/v2"

class TestPetStoreAPI: """Test Suite для PetStore API."""

def test_create_pet(self):
    """Тест на создание нового питомца."""
    url = f"{BASE_URL}/pet"
    headers = {"Content-Type": "application/json"}
    # Данные для создания питомца
    pet_data = {
        "id": 123456,
        "category": {"id": 1, "name": "dogs"},
        "name": "Bobby",
        "photoUrls": ["string"],
        "tags": [{"id": 0, "name": "string"}],
        "status": "available"
    }

    response = requests.post(url, headers=headers, data=json.dumps(pet_data))
    response_data = response.json()

    # Проверяем, что статус код 200
    assert response.status_code == 200, f"Ожидался код 200, получен {response.status_code}. Ответ: {response.text}"
    # Проверяем, что имя питомца совпадает
    assert response_data["name"] == pet_data["name"]
    # Проверяем, что статус совпадает
    assert response_data["status"] == pet_data["status"]

    print(f"\nПитомец создан: ID={response_data['id']}, Name={response_data['name']}")

def test_get_pet_by_id(self):
    """Тест на получение информации о питомце по ID."""
    pet_id = 123456
    url = f"{BASE_URL}/pet/{pet_id}"

    response = requests.get(url)
    response_data = response.json()

    # Проверяем, что статус код 200
    assert response.status_code == 200, f"Ожидался код 200, получен {response.status_code}"
    # Проверяем, что ID совпадает
    assert response_data["id"] == pet_id
    # Проверяем, что имя присутствует
    assert "name" in response_data

    print(f"\nНайден питомец: {response_data['name']}")

def test_update_pet_status(self):
    """Тест на обновление статуса питомца с использованием формы."""
    pet_id = 123456
    url = f"{BASE_URL}/pet/{pet_id}"
    headers = {"Content-Type": "application/x-www-form-urlencoded"}
    # Данные для обновления (форма)
    data = {"name": "Bobby-Updated", "status": "sold"}

    response = requests.post(url, headers=headers, data=data)
    response_data = response.json()

    # Petstore возвращает 200 при успешном обновлении через форму
    assert response.status_code == 200, f"Ожидался код 200, получен {response.status_code}. Ответ: {response.text}"
    # Проверяем сообщение об успехе (API Petstore специфично)
    assert response_data["code"] == 200
    assert "updated" in response_data["message"].lower()

    print(f"\nСтатус питомца обновлен: {response_data['message']}")

def test_delete_pet(self):
    """Тест на удаление питомца."""
    pet_id = 123456
    url = f"{BASE_URL}/pet/{pet_id}"

    response = requests.delete(url)
    response_data = response.json()

    # Проверяем, что статус код 200
    assert response.status_code == 200, f"Ожидался код 200, получен {response.status_code}"
    # Проверяем сообщение об успехе
    assert response_data["code"] == 200
    assert str(pet_id) in response_data["message"]

    print(f"\nПитомец удален: {response_data['message']}")

def test_get_deleted_pet_returns_404(self):
    """Тест на проверку, что удаленный питомец больше не доступен (Negative Test)."""
    pet_id = 123456
    url = f"{BASE_URL}/pet/{pet_id}"

    response = requests.get(url)

    # Проверяем, что после удаления получаем 404
    assert response.status_code == 404, f"Ожидался код 404, получен {response.status_code}"
    print("\nПроверка на 404 после удаления прошла успешно.")

if name == "main": # Можно запустить файл напрямую для быстрой проверки pytest.main([file, "-v"])

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published