Pular para o conteúdo principal

Teste do Databricks Connect para Python

nota

Este artigo abrange o Databricks Connect para Databricks Runtime 13.3 LTS e acima.

Este artigo descreve como executar testes usando pytest para Databricks Connect para Databricks Runtime 13.3 LTS e acima. Para obter informações sobre a instalação do site Databricks Connect, consulte Install Databricks Connect for Python.

O senhor pode executar o pytest no código local que não precisa de uma conexão com um clustering em um site remoto Databricks workspace. Por exemplo, o senhor pode usar pytest para testar suas funções que aceitam e retornam objetos PySpark DataFrame na memória local. Para começar a usar o site pytest e executá-lo localmente, consulte Get começar na documentação do site pytest.

nota

Ao executar Databricks Connect a partir do terminal, pytest só funciona com o perfil de configuração padrão. O perfil deve incluir o Databricks compute que o senhor deseja usar, seja um clustering ou serverless compute. Para obter informações sobre a configuração do site compute, consulte Compute configuration for Databricks Connect.

Por exemplo, considerando o seguinte arquivo chamado nyctaxi_functions.py contendo uma função get_spark que retorna uma instância SparkSession e uma função get_nyctaxi_trips que retorna um DataFrame representando a tabela trips no esquema nyctaxi do catálogo 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

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

main.py:

Python
from nyctaxi_functions import *

df = get_nyctaxi_trips()
df.show(5)

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

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

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

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