変奏現実

パソコンやMMORPGのことなどを思いつくまま・・・記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。

この画面は、簡易表示です

Visual Studio Code

[VSCode]Python, pytest

Visual Studio Code で Pythonのソースを実行する手順

1.VisualStudioCodeをインストールする。

https://azure.microsoft.com/ja-jp/products/visual-studio-code/ から
ダウンロードして、インスト。

日本語化する。

メニューのView Command Paletteを選択
[Configure Display Language]と入力
プルダウンリストから[Install additional Language…]を選択
画面左のEXTENSIONS: MARKETPLACEから
[Japanese Language Pack for VS Code]を選択
画面右の[Japanese Language Pack for VS Code]の説明下の【install】を押す
画面左下の【Restart Now】を押す
多々変なトコロもあるけど、タダだから仕方が無い

2.適当な場所にフォルダを作り、Pythonのソースを入れておく。

参考:https://scrapbox.io/remi-tech/VisualStudioCode%E3%81%A7pytest%E7%92%B0%E5%A2%83%E3%82%92%E4%BD%9C%E3%82%8B

E:\pythonProject
 │- sample.py
 │- pytest.ini
 └─tests
      └─ test_sample.py
def func1(para) :
    print("func1")
    return "func1_" + para

def func2(para) :
    print("func2")
    return "func2_" + para
# pytest用

import os
import sys
sys.path.append(os.getcwd())
import sample

class Test_sample :
    def test_sample_func1(self) :
        assert sample.func1("aaa") == "func1_aaa"
        
    def test_sample_func2(self) :
        assert sample.func2("aaa") == "func2_aaa"
       
[pytest]
testpaths = ./tests
python_files = test_*.py
python_classes = Test
python_functions = test_

3.ワークスペースに上記のフォルダを追加する。

メニューの【フォルダーの追加】を押す
追加するフォルダを開いたら【追加】を押す
無事に目的のフォルダが追加された
壊さないうちにワークスペースとして保存してしまおう
勿論ワークスペース設定ファイルは先のフォルダの中に作る
とりあえずOK

3.Pythonの環境作り

・Windows StoreからPython3.8をインスト。
※本来Python3.xのインストールはOSやCPUの特性を詳細に調査しgccのConfigure(中身はPython2のソース)を熟読してオプションを探り出してビルドの後のTestモードの結果を見て何度もウンザリするものだが、Windowsはその辺の選択肢が一つしかないから世界中の誰かが成功すればもうその人の設定をコピペするだけでOK(逆算的に容易)であり、今ではベンダーのHPにもインストーラが用意されている。

ところが、
> python
指定されたプログラムは実行できません。
となる、これはPATH環境変数にプログラムのパスが通っていないせい。

コントロールパネル⇒システムとセキュリティ⇒システム
システムの詳細設定の【環境変数(N)…】を押す
システム環境変数(S)のPathを選択し【編集(I)…】を押す
設定内容の最後にコマンドラインで
> where python
の結果
C:\Users\ユーザ名\AppData\Local\Microsoft\WindowsApps\python.exe
のファイル名のフルパスのフォルダ名を入れる
※ C:\Users\ユーザ名\AppData\Local\Microsoft\WindowsApps

・VSCodeのエクスプローラのpythonのソースをクリックしてみると、

【Install】を押す
少し待つと、自動的にpython(の何か)がインストールされる

その↓の説明通りデバッグビューを経由して設定を進める

※スクショ上書きして消えたけど、確か「Python」 を選択したハズ。

設定が終わったら、緑の▷を押すと実行する。

4.pytestを設定する

インスト中、3.8だとアップグレード要求が出る

> python -m pip install –upgrade pip するとpipがアップグレードされる

ここまで進むとテストビューが出てくる。
出なければpythonソースを右クリックして「全ての単体テストを実行」を選択

Discover Testを押してテストソースを探させよう!

ここで、発見できない場合は、画面の左下の「出力」に原因が出る。
大体はテストソースの何かのエラーだ。

os.cwd()は間違い os.getcwd()が正解
実行してみよう!
うまくいった!!!

あ、vscodeやpipのリポジトリィも一旦消しといた方がいいね。

vscodeの場合は、C:\Users\ユーザ名\.vscode フォルダを消す。

pipの場合は、C:\Users\slani\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.*_************
※ * 部分はインストするマイナーバージョンやランダム文字

ps.

{
	"folders": [
		{
			"path": "."
		}
	],
	"settings": {}
}
{
    // IntelliSense を使用して利用可能な属性を学べます。
    // 既存の属性の説明をホバーして表示します。
    // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal"
        }
    ]
}
{
    "python.pythonPath": "C:\\Users\\{ユーザ名}\\AppData\\Local\\Microsoft\\WindowsApps\\python3.8.exe",
    "python.testing.pytestArgs": [
        "tests"
    ],
    "python.testing.unittestEnabled": false,
    "python.testing.nosetestsEnabled": false,
    "python.testing.pytestEnabled": true
}

では、なぜこんな記事を書いたのかと云うと・・・今朝方、仕事場の開発環境がぶっ飛んだから、予算の都合で非力なマシンになってしまったので試行錯誤するとむやみに時間だけが過ぎ去っていくので家に戻って準備した。
これを見れば、あの非力なマシンでも1時間もあれば余裕のハズ。(涙

ps.
VScodeではソースを修正すると改行コードがCR・LFとLFが混在することがある。この場合、見た目は問題無いソースだけどCRのせいで行が繋がって見えるらしく、イミフなインデントエラーが出ることがある。

def func1() CRLF
    """CRLF
    コメントLF
    """LF
※コメントは宣言されていない変数です。等


エディタ右下がCRLF表示になっている時は特に危ない。

{
// エディター設定
"editor.tabSize": 4,
"editor.insertSpaces": true, // Tabキーで半角空白
// ファイル設定
"files.autoSave": "off", //VScodeを閉じている間に他のエディタでソースを開くと変なことになりやすいのでOFF
"files.eol": "\n",  // 改行コードをLFにする
}

と強制的にLFしたりTABも空白になる様に仕向けないといけないようだ。

多分、改行コードのせいなのだろう。沢山のpytestのテスト関数を全部実行したらいくつかNGになった。しかし、1つづつ実行するとOK。
こんな時は大方は初期化処理が他のテスト関数と競合していたり依存しているためだ。
そのため、
def Test_xxxxx を def __Test_xxxxx と変えてpytestをやり過ごし、少しづつ戻していって、馬鹿な間違いをしているコードをあぶりだそうとした。

しかし、その結果。全て戻したら、ALL GREENになってしまった。
エディタが何かやらかしたらしい。もし幅0空白とか見えない文字だったら勘弁だ。

結果オーライでいいんだけど、再現したら泣きそうだ。

ここまで気を使わないといけないCompute言語なら・・・
Pythonなんて無くなってしまえ!
と素直に思う。

マネーをケチれば、 等価交換に則り、時間が足りなくなるのは必然である。

Slanirish Warlander




top