Pytest
  • Введение
  • Пример тестирования
  • fixture (Фикстуры)
    • Параметризация
    • декораторы в питоне
    • Пример использования
  • 📚Практика
    • API OpenWeatherMap
    • API OMDBapi
  • scope
  • Запуск тестов через терминал
    • пример иерархии каталогов для организации тестов и их запуска с помощью Pytest
  • argparse
    • Создание интерфейса командной строки
Powered by GitBook
On this page
  1. fixture (Фикстуры)

Пример использования

тест-кейсы:

  1. Поиск фильмов по корректному имени.

  2. Поиск фильмов по некорректному (невалидному) имени (букв меньше 3).

  3. Поиск фильмов без указания апи ключа.

можно использовать мой апи кей

apikey=23f82659

код без фикстур

#----------------------------------------------------------------------------# ------------------------ test-case valid params -----------------------#
import requests
import pytest
def test_search_valid_movie():
    # base_url
    base_url = "https://www.omdbapi.com/"

    # params
    api_key = "23f82659"
    s = "matrix"

    # url
    url = f"{base_url}?apikey={api_key}&s={s}"

    # send request
    response = requests.get(url)

    # фактического результат
    status_code, response_result = response.status_code, response.json()['Response']

    # expected result
    expected_status_code = range(200, 400)
    expected_response_result = "True"

    # проверка совпадения наших ожиданий и фактического результат
    assert (status_code in expected_status_code) and response_result == expected_response_result


# ------------------------ test-case invalid param @s -----------------------#
def test_invalid_search():
    base_url = "https://www.omdbapi.com/"
    apikey = "23f82659"
    s = "m"
    url = f"{base_url}?apikey={apikey}&s={s}"
    response = requests.get(url)
    assert response.status_code in range(200, 300)
    assert response.json()['Response'] == "False"

# ------------------------ test-case invalid param @apikey -----------------------#
def test_invalid_apikey():
    base_url = "https://www.omdbapi.com/"
    apikey = "rrrr"
    s = "matrix"
    url = f"{base_url}?apikey={apikey}&s={s}"
    response = requests.get(url)
    assert response.status_code in range(400, 500)
    assert response.json()['Response'] == "False"



код c фикстурами

import requests
import pytest

@pytest.fixture
def valid_params():
    return {
        "apikey": "23f82659",
        "s": "matrix",
        "base_url": "https://www.omdbapi.com/"
    }

@pytest.fixture
def invalid_params():
    return {
        "apikey": "rrrr",
        "s": "m",
        "base_url": "https://www.omdbapi.com/"
    }

@pytest.fixture
def get_url(valid_params):
    return f"{valid_params['base_url']}?apikey={valid_params['apikey']}&s={valid_params['s']}"

def test_search_valid_movie(get_url):
    response = requests.get(get_url)
    status_code, response_result = response.status_code, response.json()['Response']
    expected_status_code = range(200, 400)
    expected_response_result = "True"
    assert (status_code in expected_status_code) and response_result == expected_response_result

def test_invalid_search(invalid_params):
    url = f"{invalid_params['base_url']}?apikey={invalid_params['apikey']}&s={invalid_params['s']}"
    response = requests.get(url)
    assert response.status_code in range(200, 300)
    assert response.json()['Response'] == "False"

def test_invalid_apikey(invalid_params):
    url = f"{invalid_params['base_url']}?apikey={invalid_params['apikey']}&s={invalid_params['s']}"
    response = requests.get(url)
    assert response.status_code in range(400, 500)
    assert response.json()['Response'] == "False"
Previousдекораторы в питонеNextAPI OpenWeatherMap

Last updated 1 year ago