Sobes.tech
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 επηρεάζει την απόδοση και την απομόνωση των δοκιμών, επιτρέποντας τον έλεγχο του πόσο συχνά δημιουργούνται και καταστρέφονται οι πόροι.