Partilhar via


Testes do Databricks Connect para Python

Nota

Este artigo aborda o Databricks Connect para o Databricks Runtime 13.3 LTS e versões superiores.

Este artigo descreve como executar testes usando pytest com Databricks Connect para Databricks Runtime 13.3 LTS e versões superiores. Para instalar o Databricks Connect for Python, consulte Install Databricks Connect for Python.

Para começar com pytest, consulte Introdução na documentação pytest.

Importante

Databricks Connect e PySpark são mutuamente exclusivos. Para obter mais informações, consulte Instalações conflitantes do PySpark.

Nota

Ao executar o Databricks Connect a partir do terminal, pytest só funciona com o perfil de configuração DEFAULT. O perfil deve incluir a computação Databricks que você deseja usar, seja um cluster ou computação sem servidor. Para obter informações sobre como configurar a computação, consulte Configuração de computação para o Databricks Connect.

Por exemplo, dado o seguinte ficheiro chamado nyctaxi_functions.py que contém uma função get_spark que retorna uma instância SparkSession e uma função get_nyctaxi_trips que retorna uma representação DataFrame da tabela trips no esquema samples do catálogo nyctaxi:

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

E dado o arquivo seguinte, chamado main.py, que chama estas funções get_spark e get_nyctaxi_trips:

main.py:

from nyctaxi_functions import *

df = get_nyctaxi_trips()
df.show(5)

O seguinte arquivo chamado test_nyctaxi_functions.py testa se a get_spark função retorna uma SparkSession instância e se a get_nyctaxi_trips função retorna uma DataFrame que contém pelo menos uma linha de dados:

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

Para executar esses testes, execute o pytest comando a partir da raiz do projeto de código, que deve produzir resultados de teste semelhantes aos seguintes:

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