Python kodu için birim testi ayarlamaSet up unit testing for Python code

Birim testleri, bir uygulamadaki diğer kod birimlerini test eden kod parçaları, genellikle yalıtılmış işlevler, sınıflar vb.Unit tests are pieces of code that test other code units in an application, typically isolated functions, classes, and so on. Bir uygulama tüm birim testlerini geçtiğinde, en az güvenlik düzeyi işlevinin doğru olduğundan emin olabilirsiniz.When an application passes all its unit tests, you can at least trust that its low-level functionality is correct.

Python, bir program tasarlarken senaryoları doğrulamak için birim testlerini kapsamlı bir şekilde kullanır.Python uses unit tests extensively to validate scenarios while designing a program. Visual Studio 'da Python desteği, testleri ayrı olarak çalıştırmaya gerek kalmadan geliştirme sürecinizin bağlamı dahilinde birim testlerini bulma, yürütme ve hata ayıklama işlemlerini içerir.Python support in Visual Studio includes discovering, executing, and debugging unit tests within the context of your development process, without needing to run tests separately.

Bu makalede, Visual Studio 'da Python ile birim testi özelliklerine ilişkin kısa bir ana hat sunulmaktadır.This article provides a brief outline of unit testing capabilities in Visual Studio with Python. Genel olarak birim testi hakkında daha fazla bilgi için bkz. birim testi kodunuz.For more on unit testing in general, see Unit test your code.

Testleri bulma ve görüntülemeDiscover and view tests

Kurala göre, Visual Studio Testleri adları ile başlayan yöntemler olarak tanımlar test .By convention, Visual Studio identifies tests as methods whose names start with test. Bu davranışı görmek için aşağıdakileri yapın:To see this behavior, do the following:

  1. Visual Studio 'da yüklü bir Python projesi açın, projenize sağ tıklayın, Add > Yeni öğeEkle ' yi seçin, sonra Python birim testi ' ni ve ardından Ekle' yi seçin.Open a Python project loaded in Visual Studio, right-click your project, select Add > New Item, then select Python Unit Test followed by Add.

  2. Bu eylem, standart test1.py modülünü içeri aktaran unittest , öğesinden bir test sınıfı türetilen unittest.TestCase ve unittest.main() betiği doğrudan çalıştırırsanız çağıran bir test1.py dosyası oluşturur:This action creates a test1.py file with code that imports the standard unittest module, derives a test class from unittest.TestCase, and invokes unittest.main() if you run the script directly:

    
    import unittest
    
    class Test_test1(unittest.TestCase):
        def test_A(self):
            self.fail("Not implemented")
    
    if __name__ == '__main__':
        unittest.main()
    
  3. Gerekirse dosyayı kaydedin ve test Gezgini ' ni test > Windows > Gezgini menü komutuyla açın.Save the file if necessary, then open Test Explorer with the Test > Windows > Test Explorer menu command.

  4. Test Gezgini projenizde testler için arama yapar ve bunları aşağıda gösterildiği gibi görüntüler.Test Explorer searches your project for tests and displays them as shown below. Bir teste çift tıklamak, kaynak dosyasını açar.Double-clicking a test opens its source file.

    Varsayılan test_A gösteren test Gezgini

  5. Projenize daha fazla test eklediğinizde, araç çubuğundaki grupla menüsünü kullanarak Test Gezgini 'nde görünümü düzenleyebilirsiniz:As you add more tests to your project, you can organize the view in Test Explorer using the Group by menu on the toolbar:

    Araç çubuğu menüsü Ile gezgin grubunu sınar

  6. Testleri ada göre filtrelemek için arama alanına da metin girebilirsiniz.You can also enter text in the Search field to filter tests by name.

Modül ve test yazma hakkında daha fazla bilgi için unittest bkz. Python 2,7 belgeleri veya python 3,7 belgeleri (Python.org).For more information on the unittest module and writing tests, see the Python 2.7 documentation or the Python 3.7 documentation (python.org).

Testleri çalıştırmaRun tests

Test Gezgini 'nde testleri çeşitli yollarla çalıştırabilirsiniz:In Test Explorer you can run tests in a variety of ways:

  • Tümünü Çalıştır tüm gösterilen testleri açıkça çalıştırır (filtrelere tabidir).Run All clearly runs all shown tests (subject to filters).
  • Çalıştır menüsü, bir grup olarak başarısız, geçti veya Çalıştır testleri çalıştırma komutları sağlar.The Run menu gives you commands to run failed, passed, or not run tests as a group.
  • Bir veya daha fazla test seçebilir, sağ tıklayıp Seçili Testleri Çalıştır' ı seçebilirsiniz.You can select one or more tests, right-click, and select Run Selected Tests.

Arka planda çalıştırılan testler ve Test Gezgini , tamamlandığında her testin durumunu güncelleştirir:Tests run in the background and Test Explorer updates each test's status as it completes:

  • Testleri geçirmek yeşil bir onay işareti ve testi çalıştırmak için geçen süreyi gösterir:Passing tests show a green tick and the time taken to run the test:

    test_A geçti durumu

  • Başarısız testler, konsol çıkışını ve Test çalıştırmasında çıktıyı gösteren bir Çıkış bağlantısı ile kırmızı bir çapraz bir çarpı gösterir unittest :Failed tests show a red cross with an Output link that shows console output and unittest output from the test run:

    başarısız test_A durumu

    test_A neden ile başarısız oldu

Hata ayıklama testleriDebug tests

Birim testleri kod parçaları olduğundan, diğer tüm kodlar gibi hatalara tabidir ve bazen bir hata ayıklayıcıda çalıştırılması gerekir.Because unit tests are pieces of code, they are subject to bugs just like any other code and occasionally need to be run in a debugger. Hata ayıklayıcıda kesme noktaları ayarlayabilir, değişkenleri inceleyebilir ve koddaki adımları izleyebilirsiniz.In the debugger you can set breakpoints, examine variables, and step through code. Visual Studio, birim testleri için de tanılama araçları sağlar.Visual Studio also provides diagnostic tools for unit tests.

Hata ayıklamayı başlatmak için kodunuzda bir başlangıç kesme noktası ayarlayın ve Test Gezgini 'nde teste (veya bir seçime) sağ tıklayın ve Seçili testlerin hatalarını ayıkla' yı seçin.To start debugging, set an initial breakpoint in your code, then right-click the test (or a selection) in Test Explorer and select Debug Selected Tests. Visual Studio, Python hata ayıklayıcısını uygulama kodu gibi başlatır.Visual Studio starts the Python debugger as it would for application code.

Bir testte hata ayıklama

Ayrıca Seçili testler Için kod kapsamını analiz et' i de kullanabilirsiniz.You can also use the Analyze Code Coverage for Selected Tests. Daha fazla bilgi için bkz. kod kapsamını kullanarak ne kadar kodun test edildiğini belirleme.For more information, see Use code coverage to determine how much code is tested.

Bilinen sorunlarKnown issues

  • Hata ayıklama başlatılırken, Visual Studio başlatma ve hata ayıklamayı durdurma gibi görünür ve sonra yeniden başlatılır.When starting debugging, Visual Studio appears to start and stop debugging, and then start again. Bu beklenen bir davranıştır.This behavior is expected.
  • Birden çok teste hata ayıklarken, her biri bağımsız olarak çalıştırılır ve hata ayıklama oturumunu keser.When debugging multiple tests, each one is run independently, which interrupts the debugging session.
  • Hata ayıklama sırasında Visual Studio zaman zaman bir test başlatamaz.Visual Studio intermittently fails to start a test when debugging. Normal olarak, testi yeniden ayıklamaya çalışırken başarılı olur.Normally, attempting to debug the test again succeeds.
  • Hata ayıklarken, uygulamaya bir test dışına geçmek mümkündür unittest .When debugging, it is possible to step out of a test into the unittest implementation. Normalde, sonraki adım programın sonuna kadar çalışır ve hata ayıklamayı sonlandırır.Normally, the next step runs to the end of the program and stops debugging.

Python projesi için test çerçevesini seçmeSelect the test framework for a Python project

Visual Studio, Python, UnitTest ve pytest için iki test çerçevesini destekler (visual Studio 2019 sürüm 16,3 ' den itibaren kullanılabilir).Visual Studio supports two testing frameworks for Python, unittest and pytest (available in Visual Studio 2019 starting with version 16.3). Varsayılan olarak, bir Python projesi oluşturduğunuzda hiçbir Framework seçilmemiş.By default, no framework is selected when you create a Python project. Bir Framework belirtmek için Çözüm Gezgini içindeki proje adına sağ tıklayın ve Özellikler seçeneğini belirleyin.To specify a framework, right-click on the project name in Solution Explorer and select the Properties option. Bu, Test sekmesi aracılığıyla testleri yapılandırmanıza olanak sağlayan proje Tasarımcısını açar. Bu sekmede, projeniz için kullanmak istediğiniz test çerçevesini seçebilirsiniz.This opens the project designer, which allows you to configure tests through the Test tab. From this tab, you can select the test framework that you want to use for your project.

  • UnitTest çerçevesi için, projenin kök dizini test bulma için kullanılır.For the unittest framework, the project's root directory is used for test discovery. Bu konum ve testlerin belirlenmesi için metin deseninin, Test sekmesinde Kullanıcı tarafından belirtilen değerler için değiştirilmesi de değiştirilebilir.This location, as well as the text pattern for identifying tests, can be modified on the Test tab to user specified values.
  • Pytest çerçevesi için, test konumu ve dosya adı desenleri gibi test seçenekleri standart pytest. ini yapılandırma dosyası kullanılarak belirtilir.For the pytest framework, testing options such as test location and filename patterns are specified using the standard pytest .ini configuration file. Daha fazla bilgi için pytest başvuru belgelerine bakın.See the pytest reference documentation for more details.

Çerçeve seçiminizi ve ayarlarını kaydettikten sonra test bulma işlemi Test Gezgini 'nde başlatılır.Once you've saved your framework selection and settings, test discovery is initiated in the Test Explorer. Test Gezgini penceresi zaten açık değilse, araç çubuğuna gidin ve Test > Test Gezgini' ni seçin.If the Test Explorer window is not already open, navigate to the toolbar and select Test > Test Explorer.

Proje olmadan Python için testi yapılandırmaConfigure testing for Python without a project

Visual Studio, Python kodu içeren bir klasör açarak mevcut Python kodunu bir proje olmadan çalıştırmanıza ve test etmenize olanak tanır.Visual Studio allows you to run and test existing Python code without a project, by opening a folder with Python code. Bu koşullarda, testi yapılandırmak için bir PythonSettings.js dosyası kullanmanız gerekir.Under these circumstances, you'll need to use a PythonSettings.json file to configure testing.

  1. Yerel klasör aç seçeneğini kullanarak mevcut Python kodunuzu açın.Open your existing Python code using the Open a Local Folder option.

    Visual Studio başlangıç ekranı

  2. Çözüm Gezgini penceresinde, geçerli klasördeki tüm dosyaları göstermek için tüm dosyaları göster simgesine tıklayın.Within the Solution Explorer window, click the Show All Files icon to show all files in the current folder.

    Tüm dosyaları göster düğmesi

  3. Yerel ayarlar klasörü içindeki PythonSettings.js dosyasına gidin.Navigate to the PythonSettings.json file within the Local Settings folder. Bu dosyayı yerel ayarlar klasöründe görmüyorsanız, el ile oluşturun.If you don't see this file in the Local Settings folder, create it manually.

  4. Testframework alanını ayarlar dosyasına ekleyin ve kullanmak istediğiniz test çerçevesine bağlı olarak pytest veya UnitTest olarak ayarlayın.Add the field TestFramework to the settings file and set it to pytest or unittest depending on the testing framework you want to use.

    {
    "TestFramework": "unittest",
    "UnitTestRootDirectory": "testing",
    "UnitTestPattern": "test_*.py"
    }
    

    Not

    UnitTest Framework Için, Unittestrootdirectory ve unittestmodel alanları dosyada PythonSettings.jsbelirtilmemişse, sırasıyla "." ve "test *. Kopyala" varsayılan değerleri eklenir ve atanır.For the unittest framework, if the fields UnitTestRootDirectory and UnitTestPattern are not specified in the PythonSettings.json file, they are added and assigned default values of "." and "test*.py" respectively.

  5. Klasörünüz, testlerinizi içeren klasörden ayrı bir src dizini içeriyorsa, dosyadaki PythonSettings.js SearchPaths alanını kullanarak src klasörünün yolunu belirtin.If your folder contains a src directory that is separate from the folder that contains your tests, specify the path to the src folder using the SearchPaths field in your PythonSettings.json file.

    {
    "TestFramework": "unittest",
    "UnitTestRootDirectory": "testing",
    "UnitTestPattern": "test_*.py",
    "SearchPaths": [ ".\\src"]
    }
    
  6. Belirtilen çerçeve için test bulmayı başlatmak üzere değişikliklerinizi dosyada PythonSettings.jskaydedin.Save your changes to the PythonSettings.json file to initiate test discovery for the specified framework.

    Not

    Test Gezgini penceresi zaten CTRL + R açıksa, bir de bulmayı tetikler.If the Test Explorer window is already open CTRL + R,A also triggers discovery.

Testleri bulma ve görüntülemeDiscover and view tests

Varsayılan olarak, Visual Studio UnitTest ve pytest testlerini adları ile başlayan yöntemler olarak tanımlar test .By default, Visual Studio identifies unittest and pytest tests as methods whose names start with test. Test bulmayı görmek için aşağıdakileri yapın:To see test discovery, do the following:

  1. Bir Python projesiaçın.Open a Python project.

  2. Proje Visual Studio 'Ya yüklendikten sonra, Çözüm Gezgini ' de projenize sağ tıklayın ve Özellikler Test sekmesinden UnitTest veya pytest çerçevesini seçin.Once the project is loaded in Visual Studio, right-click your project in Solution Explorer and select the unittest or pytest framework from the Properties Test tab.

    Not

    Pytest çerçevesini kullanırsanız, standart pytest. ini yapılandırma dosyasını kullanarak test konumu ve dosya adı desenleri belirtebilirsiniz.If you use the pytest framework, you can specify test location and filename patterns using the standard pytest .ini configuration file. Varsayılan olarak, çalışma alanı/proje klasörü, ve bir düzeniyle kullanılır test_*py *_test.py .By default, the workspace/project folder is used, with a pattern of test_*py and *_test.py. Daha fazla bilgi için pytest başvuru belgelerine bakın.See the pytest reference documentation for more details.

  3. Framework seçildikten sonra projeye tekrar sağ tıklayın ve Add > Yeni öğeEkle ' yi seçin ve ardından Ekle' yi seçin .After the framework is selected, right-click the project again and select Add > New Item, then select Python Unit Test followed by Add.

  4. Bu eylem, standart test_1.py modülünü içeri aktaran unittest , öğesinden bir test sınıfı türetilen unittest.TestCase ve unittest.main() komut dosyasını doğrudan çalıştırırsanız çağıran kod ile bir test_1. bir dosyası oluşturur:This action creates a test_1.py file with code that imports the standard unittest module, derives a test class from unittest.TestCase, and invokes unittest.main() if you run the script directly:

    import unittest
    
    class Test_test1(unittest.TestCase):
        def test_A(self):
            self.fail("Not implemented")
    
    if __name__ == '__main__':
        unittest.main()
    
  5. Gerekirse dosyayı kaydedin ve test Test Explorer > Test Gezgini menü komutuyla test Gezgini ' ni açın.Save the file if necessary, then open Test Explorer with the Test > Test Explorer menu command.

  6. Test Gezgini projenizde testler için arama yapar ve bunları aşağıda gösterildiği gibi görüntüler.Test Explorer searches your project for tests and displays them as shown below. Bir teste çift tıklamak, kaynak dosyasını açar.Double-clicking a test opens its source file.

    Varsayılan test_A gösteren test Gezgini

  7. Projenize daha fazla test eklediğinizde, araç çubuğundaki grupla menüsünü kullanarak Test Gezgini 'nde görünümü düzenleyebilirsiniz:As you add more tests to your project, you can organize the view in Test Explorer using the Group By menu on the toolbar:

    Araç çubuğu menüsü Ile gezgin grubunu sınar

  8. Testleri ada göre filtrelemek için arama alanına da metin girebilirsiniz.You can also enter text in the Search field to filter tests by name.

Modül ve test yazma hakkında daha fazla bilgi için unittest bkz. Python 2,7 belgeleri veya python 3,7 belgeleri (Python.org).For more information on the unittest module and writing tests, see the Python 2.7 documentation or the Python 3.7 documentation (python.org).

Testleri çalıştırmaRun tests

Test Gezgini 'nde testleri çeşitli yollarla çalıştırabilirsiniz:In Test Explorer you can run tests in a variety of ways:

  • Tümünü Çalıştır tüm gösterilen testleri açıkça çalıştırır (filtrelere tabidir).Run All clearly runs all shown tests (subject to filters).
  • Çalıştır menüsü, bir grup olarak başarısız, geçti veya Çalıştır testleri çalıştırma komutları sağlar.The Run menu gives you commands to run failed, passed, or not run tests as a group.
  • Bir veya daha fazla test seçebilir, sağ tıklayıp Seçili Testleri Çalıştır' ı seçebilirsiniz.You can select one or more tests, right-click, and select Run Selected Tests.

Arka planda çalıştırılan testler ve Test Gezgini , tamamlandığında her testin durumunu güncelleştirir:Tests run in the background and Test Explorer updates each test's status as it completes:

  • Testleri geçirmek yeşil bir onay işareti ve testi çalıştırmak için geçen süreyi gösterir:Passing tests show a green tick and the time taken to run the test:

    test_A geçti durumu

  • Başarısız testler, konsol çıkışını ve Test çalıştırmasında çıktıyı gösteren bir Çıkış bağlantısı ile kırmızı bir çapraz bir çarpı gösterir unittest :Failed tests show a red cross with an Output link that shows console output and unittest output from the test run:

    başarısız test_A durumu

    test_A neden ile başarısız oldu

Hata ayıklama testleriDebug tests

Birim testleri kod parçaları olduğundan, diğer tüm kodlar gibi hatalara tabidir ve bazen bir hata ayıklayıcıda çalıştırılması gerekir.Because unit tests are pieces of code, they are subject to bugs just like any other code and occasionally need to be run in a debugger. Hata ayıklayıcıda kesme noktaları ayarlayabilir, değişkenleri inceleyebilir ve koddaki adımları izleyebilirsiniz.In the debugger you can set breakpoints, examine variables, and step through code. Visual Studio, birim testleri için de tanılama araçları sağlar.Visual Studio also provides diagnostic tools for unit tests.

Not

Varsayılan olarak, test hata ayıklaması, Visual Studio 2017 için ptvsd 4 hata ayıklayıcısını kullanır (15,8 ve üzeri sürümler) ve Visual Studio 2019 için hata ayıklayıcı GPY (sürümler 16,5 ve üzeri).By default, test debugging uses the ptvsd 4 debugger for Visual Studio 2017 (versions 15.8 and later) and debugpy for Visual Studio 2019 (versions 16.5 and later). Bunun yerine ptvsd 3 kullanmak isterseniz, Araçlarseçenekler Python hata ayıklama üzerinde eski hata ayıklayıcı kullan seçeneğini belirleyebilirsiniz > Options > Python > Debugging.If you would like to instead use ptvsd 3, you can select the Use Legacy Debugger option on Tools > Options > Python > Debugging.

Hata ayıklamayı başlatmak için kodunuzda bir başlangıç kesme noktası ayarlayın ve Test Gezgini 'nde teste (veya bir seçime) sağ tıklayın ve Seçili testlerin hatalarını ayıkla' yı seçin.To start debugging, set an initial breakpoint in your code, then right-click the test (or a selection) in Test Explorer and select Debug Selected Tests. Visual Studio, Python hata ayıklayıcısını uygulama kodu gibi başlatır.Visual Studio starts the Python debugger as it would for application code.

Bir testte hata ayıklama

Ayrıca Seçili testler Için kod kapsamını analiz et' i de kullanabilirsiniz.You can also use the Analyze Code Coverage for Selected Tests. Daha fazla bilgi için bkz. kod kapsamını kullanarak ne kadar kodun test edildiğini belirleme.For more information, see Use code coverage to determine how much code is tested.