Sdílet prostřednictvím


Spouštění testů Pythonu pomocí rozšíření Databricks pro Visual Studio Code

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:

  1. V hlavní nabídce klikněte na Spustit > Přidat konfiguraci.

  2. V paletě příkazů vyberteDatabricks.

    Visual Studio Code přidá soubor .vscode/launch.json do tvého projektu, pokud tento soubor ještě neexistuje.

  3. 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 Databricks na nějaký jedinečný zobrazovaný název pro tuto konfiguraci, v tomto příkladu Unit Tests (on Databricks).
    • V tomto příkladu změňte program z ${file} na cestu v projektu, která obsahuje spouštěč testů, na ${workspaceFolder}/pytest_databricks.py.
    • Změňte args z [] na cestu projektu, který obsahuje soubory s vašimi testy, v tomto příkladu ["."].

    Soubor launch.json by 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": {}
        }
      ]
    }
    

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:

  1. Na kartě Knihovny, pokud je pytest viditelný, je pytest již nainstalován. Pokud pytest není viditelný, klepněte na tlačítko Nainstalovat nový.
  2. Pro zdroj knihovny klikněte na PyPI.
  3. Do souboru Package (Balíček) zadejte pytest.
  4. Klikněte na Install (Nainstalovat).
  5. 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:

  1. V hlavní nabídce klikněte na Zobrazit > Spustit.
  2. V seznamu Spustit a ladit klikněte na Testy jednotek (v Databricks), pokud ještě nejsou vybrány.
  3. 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.

  1. V hlavní nabídce editoru Visual Studio Code klikněte na Spustit > Přidat konfiguraci.

  2. Na paletě příkazů vyberte Ladicí program Pythonu.

    Visual Studio Code přidá soubor .vscode/launch.json do tvého projektu, pokud tento soubor ještě neexistuje.

  3. Přidat "databricks": true pole 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:

  1. V hlavní nabídce kliknutím na zobrazit > testování otevřete testovací panel.
  2. 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.