Sobes.tech
Junior — Middle

Jak zaimplementować jednolity system autoryzacji dla różnych scenariuszy testowych?

sobes.tech AI

Odpowiedź od AI

Aby wdrożyć jednolity system autoryzacji w różnych scenariuszach testowych, zwykle tworzy się osobny moduł lub narzędzie odpowiedzialne za proces uwierzytelniania i uzyskiwania tokenów dostępu. Ten moduł można wielokrotnie wykorzystywać we wszystkich testach, co zapobiega duplikacji kodu i ułatwia utrzymanie.

Główne podejścia:

  • Użycie API do autoryzacji: Na początku testu wywoływana jest API logowania, uzyskany token jest zapisywany i używany w nagłówkach żądań.
  • Przechowywanie tokena w kontekście globalnym: Na przykład w frameworku testowym token można przechowywać w zmiennej globalnej lub w kontekście sesji.
  • Przekazywanie tokena do testów: Testy pobierają token z wspólnego miejsca i używają go do autoryzacji.

Przykład w Pythonie z użyciem requests i 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

Ten sposób pozwala na centralizację autoryzacji i jej użycie w różnych testach bez powtarzania kodu.