Test de Databricks Connect pour Python

Remarque

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

Cet article explique comment exécuter des tests à l’aide pytest de 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 Démarrage dans la documentation pytest.

Important

Databricks Connect et PySpark s’excluent mutuellement. Pour plus d’informations, consultez Installations PySpark en conflit.

Remarque

Lors de l’exécution de Databricks Connect à partir du terminal, pytest fonctionne uniquement avec le profil de configuration DEFAULT. Le profil doit inclure le calcul Databricks que vous souhaitez utiliser, soit un cluster, soit un calcul serverless. Pour plus d’informations sur la configuration du calcul, consultez Configuration de calcul pour Databricks Connect.

Par exemple, étant donné le fichier suivant nommé nyctaxi_functions.py contenant une get_spark fonction qui retourne une SparkSession instance et une get_nyctaxi_trips fonction qui retourne une DataFrame représentation de la table dans le tripssamples schéma du nyctaxi catalogue :

nyctaxi_functions.py :

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

Le fichier main.py suivant appelle ces fonctions get_spark et get_nyctaxi_trips :

main.py :

from nyctaxi_functions import *

df = get_nyctaxi_trips()
df.show(5)

Le fichier test_nyctaxi_functions.py suivant teste si la fonction get_spark retourne une instance de SparkSession, et si la fonction get_nyctaxi_trips retourne un DataFrame contenant au moins une ligne de données :

test_nyctaxi_functions.py :

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 pytest commande à partir de la racine du projet de code, qui doit produire des résultats de test similaires à ce qui suit :

$ 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 ==========================