Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tato stránka popisuje, jak spustit Python testy pomocí rozšíření Databricks pro Visual Studio Code. Viz rozšíření Databricks pro Visual Studio Code.
Spouštění testů pomocí pytestu
Můžete spustit pytest v místním kódu, který nepotřebuje připojení ke clusteru ve vzdáleném pracovním prostoru Azure Databricks. Můžete například použít pytest k otestování funkcí, které přijímají a vracejí datové rámce PySpark v místní paměti. Pokud chcete začít s pytest a spouštět ho místně, přečtěte si téma Začínáme v dokumentaci k pytest.
Pokud chcete spustit pytest v kódu ve vzdáleném Azure Databricks pracovním prostoru, proveďte v projektu Visual Studio Code následující kroky:
Krok 1: Vytvoření testů
Přidejte Python soubor s následujícím kódem, který obsahuje vaše testy ke spuštění. Tento příklad předpokládá, že tento soubor má název spark_test.py a nachází se v kořenovém adresáři projektu Visual Studio Code. Tento soubor obsahuje pytestzařízení, které zpřístupňuje cluster SparkSession (vstupní bod funkce Sparku v clusteru) pro testy. Tento soubor obsahuje jeden test, který kontroluje, zda zadaná buňka v tabulce obsahuje zadanou hodnotu. Podle potřeby můžete do tohoto souboru přidat vlastní testy.
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'
Krok 2: Vytvořte spouštěč pytestu
Přidejte soubor Python s následujícím kódem, který dává pokyn pytest ke spuštění testů z předchozího kroku. Tento příklad předpokládá, že soubor má název pytest_databricks.py a nachází se v kořenovém adresáři projektu 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:])
Krok 3: Vytvoření vlastní konfigurace spuštění
Pokud chcete dát pokyn pytest ke spuštění testů, musíte vytvořit vlastní konfiguraci spuštění. Pomocí existující konfigurace spuštění založené na clusteru Databricks vytvořte vlastní konfiguraci spuštění následujícím způsobem:
V hlavní nabídce klikněte na Spustit > Přidat konfiguraci.
V paletě příkazů vyberteDatabricks.
Visual Studio Code do projektu přidá soubor
.vscode/launch.json, pokud tento soubor ještě neexistuje.Následujícím způsobem změňte konfiguraci počátečního spuštění a pak soubor uložte:
- Změňte název této konfigurace spuštění z
Run on Databricksna nějaký jedinečný zobrazovaný název pro tuto konfiguraci, v tomto příkladuUnit Tests (on Databricks). - V tomto příkladu změňte
programz${file}na cestu v projektu, která obsahuje spouštěč testů, na${workspaceFolder}/pytest_databricks.py. - Změňte
argsz[]na cestu projektu, který obsahuje soubory s vašimi testy, v tomto příkladu["."].
Soubor
launch.jsonby měl vypadat takto:{ // 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": {} } ] }- Změňte název této konfigurace spuštění z
Krok 4: Spuštění testů
Nejprve se ujistěte, že pytest je už v clusteru nainstalovaný. Například se stránkou nastavení clusteru otevřenou v pracovním prostoru Azure Databricks postupujte takto:
-
Na kartě Knihovny, pokud je pytest viditelný, je
pytestjiž nainstalován. Pokud pytest není viditelný, klepněte na tlačítko Nainstalovat nový. - Pro zdroj knihovny klikněte na PyPI.
- Do souboru Package (Balíček) zadejte
pytest. - Klikněte na Install (Nainstalovat).
- Počkejte, až se Status změní z Čekající na Nainstalováno.
Pokud chcete testy spustit, proveďte v projektu Visual Studio Code následující kroky:
- V hlavní nabídce klikněte na Zobrazit > Spustit.
- V seznamu Spustit a ladit klikněte na Testy jednotek (v Databricks), pokud ještě nejsou vybrány.
- Klikněte na zelenou šipku (Spustit ladění).
Výsledky pytest se zobrazí v konzole ladění (v hlavní nabídce Zobrazit > konzolu ladění). Tyto výsledky například ukazují, že v spark_test.py souboru byl nalezen aspoň jeden test, a tečka (.) znamená, že byl nalezen a úspěšný jeden test. (Neúspěšný test by zobrazil chybu 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)
Spouštění testů pomocí Databricks Connect
Pokud chcete testy spouštět místně, které používají rozhraní Spark API, použijte Databricks Connect.
Krok 1: Konfigurace služby Databricks Connect
Podle pokynů nakonfigurujte pro rozšíření Databricks Connect. Viz kód Debug pomocí Databricks Connect pro rozšíření Databricks pro Visual Studio Code.
Krok 2: Vytvoření jednotkového testu
Přidejte soubor Python s následujícím kódem, který obsahuje váš test ke spuštění. Tento příklad předpokládá, že tento soubor má název main_test.py.
from my_project import main
def test_find_all_taxis():
taxis = main.find_all_taxis()
assert taxis.count() > 5
Krok 3: Přidání nebo aktualizace konfigurace spuštění pro debugpy
dále vytvořte debugpy spouštěcí konfiguraci, která umožňuje Databricks Connect.
V hlavní nabídce Visual Studio Code klikněte na Run > Add configuration.
V paletě Command vyberte Python Debugger.
Visual Studio Code do projektu přidá soubor
.vscode/launch.json, pokud tento soubor ještě neexistuje.Přidat
"databricks": truepole To umožňuje databricks Connect.
{
"version": "0.2.0",
"configurations": [
{
"name": "Unit Tests (on Databricks)",
"type": "debugpy",
"databricks": true,
"request": "launch",
"program": "${file}",
"args": ["."],
"env": {},
"console": "integratedTerminal"
}
]
}
Krok 4: Spuštění testů
Pokud chcete testy spustit, proveďte v projektu Visual Studio Code následující kroky:
- V hlavní nabídce kliknutím na zobrazit > testování otevřete testovací panel.
- Na panelu testování spusťte test kliknutím na ikonu ladění přidruženou k
main_test.py. Všimněte si, že spuštěním testu se neaktivuje upravená konfigurace ladění a kód nebude mít přístup k Databricks Connect.