Sobes.tech
Junior — Middle

Как да реализираме единна система за авторизация за различни тестови сценарии?

sobes.tech AI

Отговор от AI

За реализиране на единна система за авторизация в различни тестови сценарии обикновено се създава отделен модул или помощна програма, която отговаря за процеса на удостоверяване и получаване на токени за достъп. Този модул може да бъде използван повторно във всички тестове, което предотвратява дублиране на кода и улеснява поддръжката.

Основни подходи:

  • Използване на API за авторизация: В началото на теста се извиква API за вход, полученият токен се запазва и се използва в заглавките на заявките.
  • Съхраняване на токена в глобален контекст: Например, в тестовия фреймуърк токенът може да бъде запазен в глобална променлива или в контекста на сесията.
  • Прехвърляне на токена към тестовете: Тестовете получават токена от общо място и го използват за авторизация.

Пример на Python с използване на requests и fixtures на pytest:

import pytest
import requests

@pytest.fixture(scope='session')
def auth_token():
    response = requests.post('https://example.com/api/login', json={'username': 'user', 'password': 'pass'})
    return response.json()['token']


def test_scenario_1(auth_token):
    headers = {'Authorization': f'Bearer {auth_token}'}
    response = requests.get('https://example.com/api/data', headers=headers)
    assert response.status_code == 200


def test_scenario_2(auth_token):
    headers = {'Authorization': f'Bearer {auth_token}'}
    response = requests.post('https://example.com/api/action', headers=headers)
    assert response.status_code == 201

Този подход позволява централизирането на авторизацията и използването й в различни тестове без повторение на кода.