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

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:

  1. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy nazwę projektu i wybierz polecenie Właściwości.

  2. 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ład test*.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 jak test_*.py.

  3. 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.

  1. Otwórz istniejący kod języka Python przy użyciu opcji Otwórz folder lokalny:

    Zrzut ekranu przedstawiający sposób wybierania opcji Otwórz folder lokalny po uruchomieniu programu Visual Studio 2022.

    Zrzut ekranu przedstawiający sposób wybierania opcji Otwórz folder lokalny po uruchomieniu programu Visual Studio.

  2. 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:

    Zrzut ekranu przedstawiający sposób wyświetlania ukrytych folderów i plików w Eksplorator rozwiązań w programie Visual Studio 2022.

    Zrzut ekranu przedstawiający sposób wyświetlania ukrytych folderów i plików w Eksplorator rozwiązań w programie Visual Studio.

  3. 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:

    1. Kliknij prawym przyciskiem myszy folder Local Ustawienia i wybierz polecenie Dodaj>nowy plik.

    2. Nadaj plikowi nazwę Python Ustawienia.json i wybierz klawisz Enter, aby zapisać zmiany.

    Program Visual Studio automatycznie otwiera nowy plik w edytorze.

  4. 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ń i UnitTestPattern w pliku Python Ustawienia.json, program Visual Studio automatycznie dodaje te pola z wartościami . domyślnymi i test*.py.

    • W przypadku struktury pytest opcje konfiguracji są zawsze określane w pliku konfiguracji pytest .ini , a nie za pomocą ustawień programu Visual Studio.

  5. 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"]
    
  6. 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:

  1. Otwórz projekt w języku Python w programie Visual Studio.

  2. 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).

  3. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt i wybierz polecenie Dodaj>nowy element.

    1. W oknie dialogowym Dodawanie nowego elementu wybierz typ pliku Test jednostkowyjęzyka Python.

    2. Wprowadź nazwę pliku spełniającą definicję wzorca określoną dla właściwości projektu.

    3. Wybierz Dodaj.

  4. 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łuje unittest.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:

    Zrzut ekranu przedstawiający widok domyślny testu w Eksploratorze testów w programie Visual Studio 2022.

    Zrzut ekranu przedstawiający widok domyślny testu w Eksploratorze testów.

  • Organizuj widok testów przy użyciu opcji Grupuj według na pasku narzędzi:

    Zrzut ekranu przedstawiający sposób organizowania widoku testów w Eksploratorze testów przy użyciu opcji Grupuj według w programie Visual Studio 2022.

    Zrzut ekranu przedstawiający sposób organizowania widoku testów w Eksploratorze testów przy użyciu opcji Grupuj według.

  • Filtruj testy według nazwy, wprowadzając tekst w polu Wyszukaj :

    Zrzut ekranu przedstawiający sposób filtrowania widoku testów w Eksploratorze testów przy użyciu pola Wyszukaj.

    Zrzut ekranu przedstawiający sposób filtrowania widoku testów w Eksploratorze testów przy użyciu pola 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:

    Zrzut ekranu przedstawiający stan testu z powodzeniem w Eksploratorze testów w programie Visual Studio 2022.

    Zrzut ekranu przedstawiający stan testu z powodzeniem w Eksploratorze testów.

  • 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:

    Zrzut ekranu przedstawiający stan i szczegóły przyczyny niepowodzenia testu w Eksploratorze testów w programie Visual Studio 2022.

    Zrzut ekranu przedstawiający stan testu, który zakończył się niepowodzeniem w Eksploratorze testów.

    Zrzut ekranu przedstawiający przyczynę nieudanego testu w Eksploratorze testów.

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.

    Zrzut ekranu przedstawiający sposób debugowania testu jednostkowego przy użyciu debugera programu Visual Studio 2022.

    Zrzut ekranu przedstawiający sposób debugowania testu jednostkowego przy użyciu debugera programu Visual Studio.

  • 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.