Pisanie testów jednostkowych dla języka Python za pomocą Eksploratora testów w programie Visual Studio
Testy jednostkowe to fragmenty kodu, które testują inne jednostki kodu w aplikacji, zazwyczaj izolowane funkcje, klasy itd. Gdy aplikacja przejdzie wszystkie testy jednostkowe, możesz mieć pewność, że co najmniej funkcjonalność programu niskiego poziomu jest poprawna.
Język Python intensywnie używa testów jednostkowych do weryfikowania scenariuszy podczas projektowania programu. Obsługa języka Python w programie Visual Studio obejmuje odnajdywanie, wykonywanie i debugowanie testów jednostkowych w kontekście procesu programowania bez konieczności oddzielnego uruchamiania testów.
Ten artykuł zawiera krótki opis możliwości testowania jednostkowego w programie Visual Studio z językiem Python. Aby uzyskać więcej informacji na temat testowania jednostkowego, zobacz Unit test your code (Testowanie jednostkowe kodu).
Wymagania wstępne
Program Visual Studio w systemie Windows zainstalowany z obsługą obciążeń języka Python. Aby uzyskać więcej informacji, zobacz Instalowanie obsługi języka Python w programie Visual Studio.
Projekt w języku Python z kodem lub folderem z kodem w języku Python.
Visual Studio dla komputerów Mac nie jest obsługiwana. Aby uzyskać więcej informacji, zobacz Co się dzieje z Visual Studio dla komputerów Mac? Program Visual Studio Code w systemach Windows, Mac i Linux dobrze współpracuje z językiem Python za pośrednictwem dostępnych rozszerzeń.
Wybieranie platformy testowej dla projektu w języku Python
Program Visual Studio obsługuje dwie struktury testowania dla języków Python, unittest i pytest (dostępne w programie Visual Studio 2019 w wersji 16.3 lub nowszej). Domyślnie podczas tworzenia projektu w języku Python nie jest wybierana żadna struktura.
Wykonaj następujące kroki, aby wybrać platformę testową dla projektu języka Python:
W Eksplorator rozwiązań kliknij prawym przyciskiem myszy nazwę projektu i wybierz polecenie Właściwości.
W okienku Właściwości projektu wybierz kartę Test i wybierz typ struktury testowej:
W przypadku struktury unittest program Visual Studio przypisuje katalog główny projektu na potrzeby odnajdywania testów. Wartość domyślna to
.
, ale można określić inną lokalizację podczas konfigurowania ustawień projektu. Można również określić jeden lub więcej ciągów dla wzorca nazwy pliku testowego, na przykładtest*.py, test_*.py
.W przypadku struktury pytest opcje testowania, takie jak lokalizacja testu i wzorce nazw plików, są określane przy użyciu standardowego pliku konfiguracji pytest .ini . Domyślnie folder workspace/project jest używany dla lokalizacji. Domyślny wzorzec nazwy pliku zawiera
test_*py
wartości i*_test.py
. Aby uzyskać więcej informacji, zobacz dokumentację referencyjną narzędzia pytest.
Uwaga
Podczas definiowania wzorca nazwy pliku należy pamiętać, że znaki specjalne, takie jak podkreślenie (
_
) nie są dopasowywane przez symbol wieloznaczny (*
). Jeśli chcesz użyć znaków specjalnych w nazwie pliku, określ te znaki w definicji wzorca, takie jaktest_*.py
.Aby zapisać wybór i ustawienia struktury, możesz użyć skrótu klawiaturowego Ctrl+S.
Po skonfigurowaniu struktury program Visual Studio inicjuje odnajdywanie testów i otwiera Eksploratora testów.
Konfigurowanie testowania dla języka Python bez projektu
Program Visual Studio umożliwia uruchamianie i testowanie istniejącego kodu w języku Python bez projektu, otwierając folder za pomocą kodu w języku Python. W tym scenariuszu należy skonfigurować testowanie przy użyciu pliku python Ustawienia.json.
Otwórz istniejący kod języka Python przy użyciu opcji Otwórz folder lokalny:
Po otwarciu folderu języka Python program Visual Studio tworzy kilka ukrytych folderów w celu zarządzania ustawieniami związanymi z programem. Aby wyświetlić te foldery (i inne ukryte pliki i foldery, takie jak folder .git) w Eksplorator rozwiązań, wybierz opcję Pokaż wszystkie pliki:
W Eksplorator rozwiązań rozwiń folder Local Ustawienia i kliknij dwukrotnie plik Python Ustawienia.json, aby otworzyć plik w edytorze.
Uwaga
Większość konfiguracji przedstawia dwa pliki ustawień: Python Ustawienia.json i Project Ustawienia.json. W tym ćwiczeniu należy zmodyfikować plik Python Ustawienia.json.
Jeśli nie widzisz pliku Python Ustawienia.json w folderze Local Ustawienia, możesz utworzyć go ręcznie:
Kliknij prawym przyciskiem myszy folder Local Ustawienia i wybierz polecenie Dodaj>nowy plik.
Nadaj plikowi nazwę Python Ustawienia.json i wybierz klawisz Enter, aby zapisać zmiany.
Program Visual Studio automatycznie otwiera nowy plik w edytorze.
W pliku Python Ustawienia.json dodaj następujący kod, aby zdefiniować element
TestFramework
. Ustaw wartość struktury na wartość pytest lub unittest w zależności od żądanej platformy testowania:{ "TestFramework": "unittest", "UnitTestRootDirectory": "testing", "UnitTestPattern": "test_*.py" }
Jeśli w przypadku struktury unittest nie zdefiniujesz określonych wartości dla
UnitTestRootDirectory
ustawień iUnitTestPattern
w pliku Python Ustawienia.json, program Visual Studio automatycznie dodaje te pola z wartościami.
domyślnymi itest*.py
.W przypadku struktury pytest opcje konfiguracji są zawsze określane w pliku konfiguracji pytest .ini , a nie za pomocą ustawień programu Visual Studio.
Jeśli program w języku Python zawiera folder src oddzielony od folderu zawierającego testy, określ ścieżkę do folderu src z ustawieniem
SearchPaths
w pliku Python Ustawienia.json:"SearchPaths": [".\\src"]
Zapisz zmiany w pliku Python Ustawienia.json.
Po skonfigurowaniu struktury program Visual Studio inicjuje odnajdywanie testów dla określonej platformy. Dostęp do testu można uzyskać w Eksploratorze testów.
Dodawanie i odnajdywanie testów
Domyślnie program Visual Studio identyfikuje testy unittest i pytest jako metody, których nazwy zaczynają się od test
.
Aby zobaczyć, jak program Visual Studio inicjuje odnajdywanie testów, wykonaj następujące kroki:
Otwórz projekt w języku Python w programie Visual Studio.
Ustaw właściwości struktury testowej dla projektu zgodnie z opisem w temacie Select test framework for Python project (Wybieranie struktury testowej dla projektu języka Python).
W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt i wybierz polecenie Dodaj>nowy element.
W oknie dialogowym Dodawanie nowego elementu wybierz typ pliku Test jednostkowy języka Python.
Wprowadź nazwę pliku spełniającą definicję wzorca określoną dla właściwości projektu.
Wybierz Dodaj.
Program Visual Studio tworzy plik testowy z domyślnym kodem:
import unittest class Test_test1(unittest.TestCase): def test_A(self): self.fail("Not implemented") if __name__ == '__main__': unittest.main()
Ten kod importuje moduł standardowy
unittest
i uzyskuje klasę testowąunittest.TestCase
z metody . Po bezpośrednim uruchomieniu skryptu ten kod wywołujeunittest.main()
również funkcję .
Po dodaniu nowych plików testowych program Visual Studio udostępnia je w Eksploratorze testów.
Wyświetlanie testów za pomocą Eksploratora testów
Po skonfigurowaniu struktury testowej i plików testowych program Visual Studio wyszukuje testy i wyświetla je w Eksploratorze testów.
Poniżej przedstawiono niektóre sposoby pracy z Eksploratorem testów:
Otwórz okno Eksplorator testów, wybierając pozycję Eksplorator testów>.
Po otwarciu okna Eksploratora testów użyj skrótu klawiaturowego CTRL+R, A, aby wyzwolić odnajdywanie testów.
Kliknij dwukrotnie test w Eksploratorze testów, aby otworzyć odpowiedni plik źródłowy w edytorze:
Organizuj widok testów przy użyciu opcji Grupuj według na pasku narzędzi:
Filtruj testy według nazwy, wprowadzając tekst w polu Wyszukaj :
Uruchom testy i wyświetl stan przebiegu testu zgodnie z opisem w następnej sekcji.
Aby uzyskać więcej informacji na temat modułu unittest
i pisania testów, zobacz dokumentację języka Python.
Uruchamianie testów za pomocą Eksploratora testów
W Eksploratorze testów można uruchamiać testy na kilka sposobów:
- Wybierz pozycję Uruchom wszystko (testy w widoku), aby wykonać wszystkie testy wyświetlane w bieżącym widoku na podstawie ustawień filtru.
- Użyj poleceń w menu Uruchom , aby uruchomić nieudane, przekazane lub nie uruchamiać testów jako grupy.
- Wybierz co najmniej jeden test, a następnie kliknij prawym przyciskiem myszy i wybierz opcję Uruchom wybrane testy .
Program Visual Studio uruchamia testy w tle. Eksplorator testów aktualizuje stan każdego testu w miarę jego ukończenia:
Wyniki testów pokazują zielony znacznik i czas ukończenia przebiegu testu:
Testy, które zakończyły się niepowodzeniem, pokazują czerwony znak X z linkiem Dane wyjściowe , które zawierają dane wyjściowe konsoli i
unittest
dane wyjściowe z przebiegu testu:
Sprawdzanie testów za pomocą debugera
Testy jednostkowe to fragmenty kodu, które podlegają usterce, takim jak każdy inny kod, i czasami muszą być uruchamiane w debugerze. W debugerze programu Visual Studio można ustawić punkty przerwania, zbadać zmienne i przejść przez kod. Program Visual Studio udostępnia również narzędzia diagnostyczne do testów jednostkowych.
Przejrzyj następujące kwestie dotyczące sprawdzania testów za pomocą debugera programu Visual Studio:
Domyślnie debugowanie testowe używa debugera debugera dla programu Visual Studio 2019 w wersji 16.5 lub nowszej. Niektóre wcześniejsze wersje programu Visual Studio używają debugera ptvsd 4 . Jeśli używasz starszej wersji programu Visual Studio i preferujesz debuger ptvsd 3, wybierz opcję Użyj starszego debugera w obszarze Narzędzia>Opcje>debugowania języka Python.>
Aby rozpocząć debugowanie, ustaw początkowy punkt przerwania w kodzie, a następnie kliknij prawym przyciskiem myszy test (lub wybór) w Eksploratorze testów i wybierz polecenie Debuguj wybrane testy. Program Visual Studio uruchamia debuger języka Python, tak jak w przypadku kodu aplikacji.
Jeśli wolisz, możesz użyć opcji Analizuj pokrycie kodu dla wybranych testów. Aby uzyskać więcej informacji, zobacz Używanie pokrycia kodu w celu określenia, ile kodu jest testowane.