Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
На этой странице описывается, как выполнять тесты 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.