Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Halaman ini menjelaskan cara menjalankan pengujian Python menggunakan ekstensi Databricks untuk Visual Studio Code. Lihat Apa itu ekstensi Databricks untuk Visual Studio Code?.
Menjalankan pengujian menggunakan pytest
Anda dapat menjalankan pytest pada kode lokal yang tidak memerlukan koneksi ke kluster di ruang kerja Azure Databricks jarak jauh. Misalnya, Anda dapat menggunakan pytest untuk menguji fungsi yang menerima dan mengembalikan PySpark DataFrames dalam memori lokal. Untuk memulai pytest dan menjalankannya secara lokal, lihat Memulai dalam pytest dokumentasi.
Untuk menjalankan pytest kode di ruang kerja Azure Databricks jarak jauh, lakukan hal berikut di proyek Visual Studio Code Anda:
Langkah 1: Membuat pengujian
Tambahkan file Python dengan kode berikut, yang berisi pengujian Anda untuk dijalankan. Contoh ini mengasumsikan bahwa file ini diberi nama spark_test.py dan berada di akar proyek Visual Studio Code Anda. File ini berisi pytestrangka, yang membuat kluster SparkSession (titik masuk ke fungsionalitas Spark pada kluster) tersedia untuk tes. File ini berisi satu pengujian yang memeriksa apakah sel yang ditentukan dalam tabel berisi nilai yang ditentukan. Anda dapat menambahkan pengujian Anda sendiri ke file ini sesuai kebutuhan.
from pyspark.sql import SparkSession
import pytest
@pytest.fixture
def spark() -> SparkSession:
# Create a SparkSession (the entry point to Spark functionality) on
# the cluster in the remote Databricks workspace. Unit tests do not
# have access to this SparkSession by default.
return SparkSession.builder.getOrCreate()
# Now add your unit tests.
# For example, here is a unit test that must be run on the
# cluster in the remote Databricks workspace.
# This example determines whether the specified cell in the
# specified table contains the specified value. For example,
# the third column in the first row should contain the word "Ideal":
#
# +----+-------+-------+-------+---------+-------+-------+-------+------+-------+------+
# |_c0 | carat | cut | color | clarity | depth | table | price | x | y | z |
# +----+-------+-------+-------+---------+-------+-------+-------+------+-------+------+
# | 1 | 0.23 | Ideal | E | SI2 | 61.5 | 55 | 326 | 3.95 | 3. 98 | 2.43 |
# +----+-------+-------+-------+---------+-------+-------+-------+------+-------+------+
# ...
#
def test_spark(spark):
spark.sql('USE default')
data = spark.sql('SELECT * FROM diamonds')
assert data.collect()[0][2] == 'Ideal'
Langkah 2: Membuat runner pytest
Tambahkan file Python dengan kode berikut, yang menginstruksikan pytest untuk menjalankan pengujian Anda dari langkah sebelumnya. Contoh ini mengasumsikan bahwa file diberi nama pytest_databricks.py dan berada di akar proyek Visual Studio Code Anda.
import pytest
import os
import sys
# Run all tests in the connected directory in the remote Databricks workspace.
# By default, pytest searches through all files with filenames ending with
# "_test.py" for tests. Within each of these files, pytest runs each function
# with a function name beginning with "test_".
# Get the path to the directory for this file in the workspace.
dir_root = os.path.dirname(os.path.realpath(__file__))
# Switch to the root directory.
os.chdir(dir_root)
# Skip writing .pyc files to the bytecode cache on the cluster.
sys.dont_write_bytecode = True
# Now run pytest from the root directory, using the
# arguments that are supplied by your custom run configuration in
# your Visual Studio Code project. In this case, the custom run
# configuration JSON must contain these unique "program" and
# "args" objects:
#
# ...
# {
# ...
# "program": "${workspaceFolder}/path/to/this/file/in/workspace",
# "args": ["/path/to/_test.py-files"]
# }
# ...
#
retcode = pytest.main(sys.argv[1:])
Langkah 3: Membuat konfigurasi eksekusi kustom
Untuk menginstruksikan pytest untuk menjalankan pengujian, Anda harus membuat konfigurasi eksekusi kustom. Gunakan konfigurasi eksekusi berbasis kluster Databricks yang ada untuk membuat konfigurasi eksekusi kustom Anda sendiri, sebagai berikut:
Pada menu utama, klik Jalankan > Tambahkan konfigurasi.
Di Palet Perintah, pilih Databricks.
Visual Studio Code menambahkan
.vscode/launch.jsonfile ke proyek Anda, jika file ini belum ada.Ubah konfigurasi eksekusi pemula sebagai berikut, lalu simpan file:
- Ubah nama konfigurasi eksekusi ini dari
Run on Databrickske beberapa nama tampilan unik untuk konfigurasi ini, dalam contohUnit Tests (on Databricks)ini . - Ubah
programdari${file}ke jalur dalam proyek yang berisi runner pengujian, dalam contoh${workspaceFolder}/pytest_databricks.pyini . - Ubah
argsdari[]ke jalur dalam proyek yang berisi file dengan pengujian Anda, dalam contoh["."]ini .
File Anda
launch.jsonakan terlihat seperti ini:{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "type": "databricks", "request": "launch", "name": "Unit Tests (on Databricks)", "program": "${workspaceFolder}/pytest_databricks.py", "args": ["."], "env": {} } ] }- Ubah nama konfigurasi eksekusi ini dari
Langkah 4: Jalankan pengujian
Pastikan bahwa pytest sudah diinstal pada kluster terlebih dahulu. Misalnya, dengan halaman pengaturan kluster terbuka di ruang kerja Azure Databricks Anda, lakukan hal berikut:
- Pada tab Pustaka , jika pytest terlihat, maka
pytestsudah diinstal. Jika pytest tidak terlihat, klik Instal baru. - Untuk Sumber Pustaka, klik PyPI.
- Untuk Paket, masukkan
pytest. - Klik Pasang.
- Tunggu hingga Status berubah dari Tertunda ke Terinstal.
Untuk menjalankan pengujian, lakukan hal berikut dari proyek Visual Studio Code Anda:
- Pada menu utama, klik Tampilkan > Jalankan.
- Di daftar Jalankan dan Debug, klik Pengujian Unit (di Databricks), jika belum dipilih.
- Klik ikon panah hijau (Mulai Penelusuran Kesalahan).
Hasilnya pytest ditampilkan di Konsol Debug (Lihat > Konsol Debug di menu utama). Misalnya, hasil ini menunjukkan bahwa setidaknya satu pengujian ditemukan dalam spark_test.py file, dan titik (.) berarti bahwa satu pengujian ditemukan dan lulus. (Tes yang Fgagal akan menunjukkan .)
<date>, <time> - Creating execution context on cluster <cluster-id> ...
<date>, <time> - Synchronizing code to /Workspace/path/to/directory ...
<date>, <time> - Running /pytest_databricks.py ...
============================= test session starts ==============================
platform linux -- Python <version>, pytest-<version>, pluggy-<version>
rootdir: /Workspace/path/to/directory
collected 1 item
spark_test.py . [100%]
============================== 1 passed in 3.25s ===============================
<date>, <time> - Done (took 10818ms)
Menjalankan pengujian menggunakan Databricks Connect
Untuk menjalankan pengujian secara lokal yang menggunakan API Spark, gunakan Databricks Connect.
Langkah 1: Mengonfigurasi Databricks Connect
Ikuti langkah-langkah untuk mengonfigurasi Databricks Connect untuk ekstensi. Lihat Kode debug menggunakan Databricks Connect untuk ekstensi Databricks untuk Visual Studio Code.
Langkah 2: Membuat pengujian unit
Tambahkan file Python dengan kode berikut, yang berisi pengujian Anda untuk dijalankan. Contoh ini mengasumsikan bahwa file ini bernama main_test.py.
from my_project import main
def test_find_all_taxis():
taxis = main.find_all_taxis()
assert taxis.count() > 5
Langkah 3: Menambahkan atau memperbarui konfigurasi peluncuran debugpy
Selanjutnya, buat debugpy konfigurasi peluncuran yang memungkinkan Databricks Connect.
Pada menu utama Visual Studio Code, klik Jalankan > Tambahkan konfigurasi.
Di Palet Perintah, pilih Python Debugger.
Visual Studio Code menambahkan
.vscode/launch.jsonfile ke proyek Anda, jika file ini belum ada.Tambahkan kolom
"databricks": true. Ini memungkinkan Databricks Connect.
{
"version": "0.2.0",
"configurations": [
{
"name": "Unit Tests (on Databricks)",
"type": "debugpy",
"databricks": true,
"request": "launch",
"program": "${file}",
"args": ["."],
"env": {},
"console": "integratedTerminal"
}
]
}
Langkah 4: Jalankan pengujian
Untuk menjalankan pengujian, lakukan hal berikut dari proyek Visual Studio Code Anda:
- Pada menu utama, klik Lihat > Pengujian untuk membuka panel pengujian.
- Di panel pengujian, jalankan pengujian Anda dengan mengklik ikon debug yang terkait dengan
main_test.py. Perhatikan bahwa hanya menjalankan pengujian tidak akan memicu konfigurasi debug yang dimodifikasi, dan kode tidak akan memiliki akses ke Databricks Connect.