Junior — Middle
Μπορείτε να εξηγήσετε τι σημαίνει η έννοια του Scope στο πλαίσιο του PyTest και πώς επηρεάζει την εκτέλεση των δοκιμών;
sobes.tech AI
Απάντηση από AI
Στο PyTest, η παράμετρος scope ορίζει το πεδίο ζωής (κύκλο ζωής) της fixture — δηλαδή, πόσο καιρό θα δημιουργείται και θα χρησιμοποιείται στις δοκιμές.
Οι βασικές τιμές του scope είναι:
- function (προεπιλογή): η fixture δημιουργείται ξανά για κάθε δοκιμή.
- class: η fixture δημιουργείται μία φορά ανά κλάση δοκιμών.
- module: η fixture δημιουργείται μία φορά ανά module (αρχείο δοκιμών).
- package: η fixture δημιουργείται μία φορά ανά πακέτο.
- session: η fixture δημιουργείται μία φορά για όλη τη συνεδρία δοκιμών.
Για παράδειγμα, αν η fixture έχει scope="module", αρχικοποιείται μία φορά πριν την εκτέλεση όλων των δοκιμών στο module και καταστρέφεται μετά. Αυτό βοηθά στην εξοικονόμηση χρόνου και πόρων, ειδικά αν η fixture δημιουργεί, για παράδειγμα, μια σύνδεση σε μια βάση δεδομένων ή σε έναν διακομιστή.
Παράδειγμα fixture με scope:
import pytest
@pytest.fixture(scope="module")
def db_connection():
conn = create_connection()
yield conn
conn.close()
Έτσι, το scope επηρεάζει την απόδοση και την απομόνωση των δοκιμών, επιτρέποντας τον έλεγχο του πόσο συχνά δημιουργούνται και καταστρέφονται οι πόροι.