Sobes.tech
Junior — Middle

როგორ განვახორციელოთ ერთიანი ავტორიზაციის სისტემა სხვადასხვა ტესტის სცენარებისთვის?

sobes.tech AI

პასუხი AI-სგან

სხვადასხვა ტესტის სცენარებში ერთიანი ავტორიზაციის სისტემის განხორციელებისთვის ჩვეულებრივ ქმნიან ცალკე მოდულს ან utility-ს, რომელიც პასუხისმგებელია ავტორიზაციის პროცესზე და წვდომის ტოკენების მიღებაზე. ამ მოდულს შეიძლება გამოიყენოს ყველა ტესტში, რაც თავიდან აცილებს კოდის დუბლირებას და ამარტივებს შენარჩუნებას.

ძირითადი მიდგომები:

  • API-ს გამოყენება ავტორიზაციისთვის: ტესტის დასაწყისში იძახება შესვლის API, მიღებული ტოკენი ინახება და გამოიყენება მოთხოვნების სათაურებში.
  • ტოკენის შენახვა გლობალურ კონტექსტში: მაგალითად, ტესტის ჩარჩოში, ტოკენი შეიძლება იყოს გლობალურ ცვლადში ან სესიის კონტექსტში.
  • ტოკენის გადაცემა ტესტებს: ტესტები იღებენ ტოკენს საერთო ადგილიდან და იყენებენ მას ავტორიზაციისთვის.

Python-ში requests და pytest fixtures-ის გამოყენებით მაგალითი:

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

ეს მიდგომა საშუალებას აძლევს ცენტრალიზებული იყოს ავტორიზაცია და გამოიყენოს იგი სხვადასხვა ტესტში, კოდის გამეორების გარეშე.