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

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の使用を開始するには、 pytestドキュメントの「使用開始」を参照してください。

重要

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