web-dev-qa-db-ja.com

Python VSCodeでユニットテストが検出されない

unittestと呼ばれる単一のテストクラスで_scraping_test.py_と呼ばれるpythonテストファイルを作成しました。これは、TestScrapingUtilsと呼ばれます。

_"""Tests for the scraping app"""
import unittest

from bs4 import BeautifulSoup as bs4

from mosque_scraper.management.commands import scraping_utils
from mosque_scraper.selectors import MOSQUE_INFO_ROWS_SELECTOR

class TestScrapingUtils(unittest.TestCase):
    """Test scraping_utils.py """
    def setup(self):
        """Setup McSetupface."""
        pass
    def test_get_keys_from_row(self):
        """ Test that we extract the correct keys from the supplied rows."""
        test_page_name = "test_page.html"
        with open(test_page_name) as test_page_file:
            test_mosque = bs4(test_page_file, 'html.parser')
            rows = test_mosque.select(MOSQUE_INFO_ROWS_SELECTOR)
            field_dict = scraping_utils.get_fields_from_rows(rows)
            self.assertDictEqual(field_dict, {})
_

単体テストの設定は次のとおりです。

_{
    "python.unitTest.unittestEnabled": true,
    "python.unitTest.unittestArgs": [
        "-v",
        "-s",
        ".",
        "-p",
        "*test.py"
    ]
}
_

動作するように見えますが、クリックしてVSCodeでテストを実行すると、テストが検出されなかったと表示されます。

_No tests discovered, please check the configuration settings for the tests.
_

どうすればそれを機能させることができますか?

7
Pureferret

ショートカットキーshift + ctrl pを使用して一度実行し、「Python run allunittests」と入力する必要があります。

少なくとも1回は正常に実行されるか、単体テストメソッドを使用するまで、エディターに表示されません。

ただし、何度も気になるのは、Pythonファイルは有効なPythonファイルである必要があるということです。VSCodeのPythonは複雑ではなく(JavascriptまたはTypeScriptと比較して)、構文エラーを強調表示しません。すべてのユニットテストを強制的に実行し、Pythonテストログウィンドウ。

5
Derek Liang

私にとっては、ユニットテストを発見することでうまくいきました。

SHIFT+CTRL+P 「Python:ユニットテストの発見」を実行します

これを実行した後、各テスト関数に対して「テストの実行|デバッグテスト」を取得します。

0
Juha Palomäki