Aller au contenu principal

Test pour Databricks Connect pour Python

remarque

Cet article couvre Databricks Connect pour Databricks Runtime 13.3 LTS et les versions ultérieures.

Cet article décrit comment exécuter des tests à l'aide de pytest avec Databricks Connect pour Databricks Runtime 13.3 LTS et versions ultérieures. Pour installer Databricks Connect pour Python, consultez Installer Databricks Connect pour Python.

Pour démarrer avec pytest, consultez Get start dans la documentation pytest.

important

Databricks Connect et PySpark s'excluent mutuellement. Pour plus d'informations, consultez Conflits d'installation PySpark.

remarque

Lorsque vous exécutez Databricks Connect depuis le terminal, pytest ne fonctionne qu'avec le profil de configuration DEFAULT. Le profil doit inclure le compute Databricks que vous souhaitez utiliser, soit un cluster, soit un compute Serverless. Pour des informations sur la configuration du compute, consultez la configuration du Compute pour Databricks Connect.

Par exemple, étant donné le fichier suivant nommé nyctaxi_functions.py contenant une fonction get_spark qui renvoie une instance SparkSession et une fonction get_nyctaxi_trips qui renvoie un DataFrame représentant la table trips dans le schéma nyctaxi du catalogue samples :

nyctaxi_functions.py:

Python
from databricks.connect import DatabricksSession
from pyspark.sql import DataFrame, SparkSession

def get_spark() -> SparkSession:
spark = DatabricksSession.builder.getOrCreate()
return spark

def get_nyctaxi_trips() -> DataFrame:
spark = get_spark()
df = spark.read.table("samples.nyctaxi.trips")
return df

Et étant donné le fichier nommé main.py qui appelle ces fonctions get_spark et get_nyctaxi_trips :

main.py:

Python
from nyctaxi_functions import *

df = get_nyctaxi_trips()
df.show(5)

Le fichier suivant nommé test_nyctaxi_functions.py teste si la fonction get_spark renvoie une instance SparkSession et si la fonction get_nyctaxi_trips renvoie un DataFrame qui contient au moins une ligne de données :

test_nyctaxi_functions.py:

Python
import pyspark.sql.connect.session
from nyctaxi_functions import *

def test_get_spark():
spark = get_spark()
assert isinstance(spark, pyspark.sql.connect.session.SparkSession)

def test_get_nyctaxi_trips():
df = get_nyctaxi_trips()
assert df.count() > 0

Pour exécuter ces tests, exécutez la commande pytest à partir de la racine du projet de code, ce qui devrait produire des résultats de test similaires à ce qui suit :

Bash
$ pytest
=================== test session starts ====================
platform darwin -- Python 3.11.7, pytest-8.1.1, pluggy-1.4.0
rootdir: <project-rootdir>
collected 2 items

test_nyctaxi_functions.py .. [100%]
======================== 2 passed ==========================