Test pour Databricks Connect pour Python
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.
Databricks Connect et PySpark s'excluent mutuellement. Pour plus d'informations, consultez Conflits d'installation PySpark.
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:
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:
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:
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 :
$ 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 ==========================