Teste do Databricks Connect para Python
Observação
Este artigo abrange 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 mais informações sobre Databricks Connect, consulte Databricks Connect para Python.
Esta informação pressupõe que o senhor já tenha instalado o Databricks Connect para Python. Consulte Instalar o Databricks Connect para Python.
O senhor pode executar o pytest no código local que não precisa de uma conexão com um cluster em um Databricks workspace remoto. Por exemplo, o senhor pode usar pytest
para testar suas funções que aceitam e retornam objetos PySpark DataFrame
na memória local. Para obter o começar com pytest
e executá-lo localmente, consulte Obter o começar na documentação do pytest
.
Por exemplo, dado 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 uma DataFrame
representando a tabela trips
no esquema nyctaxi
do catálogo 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
E dado o seguinte arquivo chamado main.py
que chama essas funções get_spark
e get_nyctaxi_trips
:
main.py
:
from nyctaxi_functions import *
df = get_nyctaxi_trips()
df.show(5)
O arquivo a seguir, denominado 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
:
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:
$ 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 ==========================