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 spouštět testy Pythonu pomocí rozšíření Databricks pro Visual Studio Code. Podívejte se , co je rozšíření Databricks pro Visual Studio Code?.
Spouštění testů pomocí pytestu
Pytest můžete spustit na 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 kód ve vzdáleném pracovním prostoru Azure Databricks, proveďte v projektu Visual Studio Code následující kroky:
Krok 1: Vytvoření testů
Přidejte soubor Pythonu 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 je pojmenován spark_test.py a je v kořenovém adresáři projektu editoru 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 Pythonu 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 je pojmenovaný pytest_databricks.py a nachází se v kořenovém adresáři projektu editoru 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 přidá soubor
.vscode/launch.jsondo tvého projektu, 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 editoru 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 Ladění kódu pomocí Databricks Connect pro rozšíření Databricks pro Visual Studio Code.
Krok 2: Vytvoření jednotkového testu
Přidejte soubor Pythonu s následujícím kódem, který obsahuje váš test, který se má spustit. 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 editoru Visual Studio Code klikněte na Spustit > Přidat konfiguraci.
Na paletě příkazů vyberte Ladicí program Pythonu.
Visual Studio Code přidá soubor
.vscode/launch.jsondo tvého projektu, 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 editoru 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.