Junior — Middle
Πώς να υλοποιήσετε ένα ενιαίο σύστημα εξουσιοδότησης για διαφορετικά σενάρια δοκιμής;
sobes.tech AI
Απάντηση από AI
Για την υλοποίηση ενός ενιαίου συστήματος εξουσιοδότησης σε διαφορετικά σενάρια δοκιμών, συνήθως δημιουργείται ένα ξεχωριστό module ή utility που είναι υπεύθυνο για τη διαδικασία αυθεντικοποίησης και την απόκτηση των tokens πρόσβασης. Αυτό το module μπορεί να επαναχρησιμοποιηθεί σε όλες τις δοκιμές, αποφεύγοντας την επανάληψη κώδικα και διευκολύνοντας τη συντήρηση.
Κύριες προσεγγίσεις:
- Χρήση API για εξουσιοδότηση: Στην αρχή της δοκιμής, καλείται το API σύνδεσης, το ληφθέν token αποθηκεύεται και χρησιμοποιείται στους επικεφαλίδες των αιτημάτων.
- Αποθήκευση του token σε παγκόσμιο πλαίσιο: Για παράδειγμα, στο πλαίσιο δοκιμών, το token μπορεί να αποθηκευτεί σε μια παγκόσμια μεταβλητή ή στο πλαίσιο της συνεδρίας.
- Μεταβίβαση του token στις δοκιμές: Οι δοκιμές λαμβάνουν το token από ένα κοινό σημείο και το χρησιμοποιούν για εξουσιοδότηση.
Παράδειγμα σε 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
Αυτή η προσέγγιση επιτρέπει τον κεντρικό έλεγχο της εξουσιοδότησης και τη χρήση της σε διαφορετικές δοκιμές χωρίς επανάληψη κώδικα.