Skip to content

Fedor86K/pytest-QA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 

Repository files navigation

pytest-QA

Данный тестовый набор для фреймворка Pytest, демонстрирует способ автотестирования API по позитивнму и негативному сценариям, через GET запрос к серверу https://api.coingecko.com

Тестовый запрос: https://api.coingecko.com/api/v3/simple/price?ids={id}&vs_currencies=usd

Файл сценария: coingecko autotest

Наборы тестовых данных {id}:

VAL: "bitcoin", "ethereum", "ripple"

NOT VAL: "", "1234567890", " @test"

ER для test_positive_coingecko(id): {id:{"usd":(int,float)}}

ER для test_negative_coingecko(id): {}

Версия Python: 3.11.2

Версия pytest: 7.3.0

Тестовый сценарий:

import pytest
import requests
import json

# Декорируем функцию test_positive_coingecko параметризованными тестами с параметром "id",
# который последовательно принимет значения из списка валидных тестовых данных
@pytest.mark.parametrize("id", ["bitcoin", "ethereum", "ripple"])
def test_positive_coingecko(id):
    # Отправляем GET запрос с заданными параметрами id и vs_currencies
    response = requests.get(f"https://api.coingecko.com/api/v3/simple/price?ids={id}&vs_currencies=rub")
    # Проверяем, что HTTP статус кода ответа равен 200
    assert response.status_code == 200
    # Загружаем JSON-ответ в объект Python
    json_response = json.loads(response.text)
    # Проверяем наличие ключа, соответствующего id в JSON ответе
    assert id in json_response.keys()
    # Проверяем, наличие ключа "rub" и тип его значения
    assert isinstance(json_response[id].get("rub"), (int, float))

# Декорируем функцию test_negative_coingecko параметризованными тестами с параметром "id",
# который последовательно принимает значения из списка невалидных тестовых данных
@pytest.mark.parametrize("id", ["", "1234567890", " @test"])
def test_negative_coingecko(id):
    # Отправляем GET запрос с заданными параметрами id и vs_currencies
    response = requests.get(f"https://api.coingecko.com/api/v3/simple/price?ids={id}&vs_currencies=usd")
    # Проверяем, что HTTP статус кода ответа равен 200
    assert response.status_code == 200
    # Загружаем JSON ответ в объект Python
    json_response = json.loads(response.text)
    # Проверяем, что JSON ответ пуст
    assert json_response == {}

Результаты прохождения набора позитивных тестов с использованием невалидных и валидных данных :

alt text

Успехов в Вашей работе!

Releases

No releases published

Packages

No packages published

Languages