メインコンテンツまでスキップ

Databricks Connect for Python のテスト

注記

この記事では、Databricks Runtime13.3LTS以降のDatabricks Connectについて説明します。

この記事では、Databricks Runtime 13.3 LTS 以降で Databricks Connect の pytest を使用してテストを実行する方法について説明します。Databricks Connect for Python をインストールするには、「 Databricks Connect for Python のインストール」を参照してください。

pytest は、リモート Databricks ワークスペース内のクラスターへの接続を必要としないローカル コードで実行できます。たとえば、 pytest を使用して、ローカルメモリ内の PySpark DataFrame オブジェクトを受け入れて返す関数をテストできます。 pytestの使用を開始し、ローカルで実行するには、pytest のドキュメントのはじめにを参照してください。

important

Databricks Connect と PySpark は相互に排他的です。詳細については、競合する PySpark インストールを参照してください。

注記

ターミナルから Databricks Connect を実行する場合、pytest はデフォルト構成プロファイルでのみ機能します。 プロファイルには、使用するコンピュート (クラスタリングまたはサーバレス コンピュート) Databricks を含める必要があります。 コンピュートの設定に関する情報については、Databricks Connectにおけるコンピュートの設定を参照してください 。

たとえば、SparkSession インスタンスを返す the get_spark 関数と、samples カタログの nyctaxi スキーマの trips テーブルを表すDataFrameを返す get_nyctaxi_trips 関数を含む nyctaxi_functions.py という名前の次のファイルがあるとします。

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

そして、これらのget_spark関数とget_nyctaxi_trips関数を呼び出すmain.pyという名前の次のファイルがあるとします。

main.py:

Python
from nyctaxi_functions import *

df = get_nyctaxi_trips()
df.show(5)

次の test_nyctaxi_functions.py という名前のファイルは、 get_spark 関数が SparkSession インスタンスを返すかどうか、および get_nyctaxi_trips 関数が少なくとも 1 行のデータを含む DataFrame を返すかどうかをテストします。

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

これらのテストを実行するには、コード プロジェクトのルートから pytest コマンドを実行すると、次のようなテスト結果が生成されます。

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