Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
На этой странице описывается, как выполнять тесты Python с помощью расширения Databricks для Visual Studio Code. См. раздел "Что такое расширение Databricks для Visual Studio Code?".
Выполнение тестов с помощью pytest
Вы можете запустить pytest в локальном коде, который не требует подключения к кластеру в удаленной рабочей области Azure Databricks. Например, можно использовать pytest для тестирования функций, которые в локальной памяти принимают и возвращают DataFrame PySpark. Чтобы приступить к работе с pytest и запустить его локально, см. раздел в документации по pytest.
Чтобы выполнить код pytest в рабочей области Azure Databricks на удаленной машине, сделайте следующие шаги в вашем проекте Visual Studio Code:
Шаг 1. Создание тестов
Добавьте файл Python со следующим кодом, который содержит тесты для выполнения. В этом примере предполагается, что этот файл называется spark_test.py и находится в корне проекта Visual Studio Code. Этот файл содержит pytestфикстуру, которая делает SparkSession (точку входа в функциональность Spark на кластере) доступным для тестов. Этот файл содержит один тест, который проверяет, содержит ли указанная ячейка в таблице указанное значение. При необходимости можно добавить собственные тесты в этот файл.
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'
Шаг 2. Создание runner pytest
Добавьте файл Python со следующим кодом, который указывает pytest на выполнение тестов на предыдущем шаге. В этом примере предполагается, что файл называется pytest_databricks.py и находится в корне проекта Visual Studio Code.
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:])
Шаг 3. Создание настраиваемой конфигурации запуска
Чтобы проинструктировать pytest выполнить тесты, нужно создать настраиваемую конфигурацию запуска. Используйте существующую конфигурацию запуска на основе кластера Databricks , чтобы создать собственную настраиваемую конфигурацию запуска, как показано ниже.
В главном меню выберите пункт "Запустить > Добавить конфигурацию".
В палитре команд выберите Databricks.
Visual Studio Code добавляет
.vscode/launch.jsonфайл в проект, если этот файл еще не существует.Измените конфигурацию запуска начального запуска следующим образом, а затем сохраните файл:
- Измените имя этой конфигурации запуска с
Run on Databricksна некоторое уникальное имя этой конфигурации, в этом примереUnit Tests (on Databricks). - Измените
programс${file}на путь в проекте, который содержит тестовый раннер, в этом примере${workspaceFolder}/pytest_databricks.py. - Измените
argsс[]на путь в проекте, который содержит файлы с вашими тестами, в данном примере["."].
Файл
launch.jsonдолжен выглядеть следующим образом:{ // 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": {} } ] }- Измените имя этой конфигурации запуска с
Шаг 4. Выполнение тестов
Сначала убедитесь, что pytest уже установлен в кластере. Например, при открытии страницы параметров кластера в рабочей области Azure Databricks сделайте следующее:
- На вкладке "Библиотеки", если pytest отображается, то
pytestуже установлен. Если pytest не отображается, нажмите кнопку "Установить новую". - Для источника библиотеки щелкните PyPI.
- Для пакета введите
pytest. - Щелкните Установить.
- Подождите до тех пор, пока состояние не изменится с ожидания на установлено.
Чтобы выполнить тесты, выполните следующие действия из проекта Visual Studio Code:
- В главном меню выберите Вид > Выполнить.
- В списке Запуск и Отладка щелкните Модульные Тесты (в Databricks), если он еще не выбран.
- Щелкните значок зеленой стрелки (начать отладку).
pytest Результаты отображаются в консоли отладки (просмотр > консоли отладки в главном меню). Например, эти результаты показывают, что в spark_test.py файле найден хотя бы один тест, а точка (.) означает, что был найден и передан один тест. (Неудачный тест будет отображать F.)
<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)
Выполнение тестов с помощью Databricks Connect
Для локального выполнения тестов, использующих API Spark, используйте Databricks Connect.
Шаг 1. Настройка Databricks Connect
Выполните действия, чтобы настроить Databricks Connect для расширения. Смотрите Отладка кода с использованием Databricks Connect для расширения Databricks для Visual Studio Code.
Шаг 2. Создание модульного теста
Добавьте файл Python со следующим кодом, который содержит тест для запуска. В этом примере предполагается, что этот файл называется main_test.py.
from my_project import main
def test_find_all_taxis():
taxis = main.find_all_taxis()
assert taxis.count() > 5
Шаг 3. Добавление или обновление конфигурации запуска debugpy
Затем создайте конфигурацию debugpy запуска, которая включает Databricks Connect.
В главном меню Visual Studio Code нажмите «Запуск > Добавить конфигурацию».
В палитре команд выберите отладчик Python.
Visual Studio Code добавляет
.vscode/launch.jsonфайл в проект, если этот файл еще не существует.Добавьте
"databricks": trueполе. Это позволяет Databricks Connect.
{
"version": "0.2.0",
"configurations": [
{
"name": "Unit Tests (on Databricks)",
"type": "debugpy",
"databricks": true,
"request": "launch",
"program": "${file}",
"args": ["."],
"env": {},
"console": "integratedTerminal"
}
]
}
Шаг 4. Выполнение тестов
Чтобы выполнить тесты, выполните следующие действия из проекта Visual Studio Code:
- В главном меню нажмите кнопку "Просмотреть > тестирование ", чтобы открыть панель тестирования.
- На панели тестирования запустите тест, щелкнув значок отладки, связанный с
main_test.py. Обратите внимание, что только запуск теста не активирует измененную конфигурацию отладки, и код не будет иметь доступа к Databricks Connect.