Djangoのテンプレートを書くためのExtensionはどれが良いのかさまよっていたけど、とりあえずコレにしてみたという話。
ハマった点
最初にスターが多いこちらなどを入れてみたのだけれど、なんでかhtmlの補完が効かなくなってしまって嫌だった。
htmlの補完機能はこれらを使っているが、コイツらが使えなくなるのは嫌だ。
Djangoのテンプレートを書くためのExtensionはどれが良いのかさまよっていたけど、とりあえずコレにしてみたという話。
最初にスターが多いこちらなどを入れてみたのだけれど、なんでかhtmlの補完が効かなくなってしまって嫌だった。
htmlの補完機能はこれらを使っているが、コイツらが使えなくなるのは嫌だ。
pythonについてくるやつです。
仮想環境: Python環境構築ガイド - python.jp
python3 -m venv .newenv # 有効化 source .venv/bin/activate . .venv/bin/activate # 無効化 deactivate
sourceと.はシェルを実行するコマンドです
venv --claerで初期化
削除はフォルダを消す
仮想環境作成時に使うpythonバージョンを指定できる。
切り替えはできずすでにあるpythonにリンクできるだけ?
python3 -m pip install virtualenv virtualenv -p python3.8 newenv source /newenv/bin/activate # 無効化 deactivate
Python の実行環境を切り替えて使用する (virtualenv) Python3.2まで | まくまくPythonノート
pyenvを使ったpythonバージョンの切り替えができるよう。
仮想環境構築と使うpythonバージョンを指定できる。
Managing packages — conda 4.9.2.post26+f52f2bf4 documentation
conda install xxx conda remove xxx
conda listコマンドはインストールしたパッケージのリストを表示する。
取得元チャネルも表示。
conda list
channelはローカル、リモートなどパッケージの取得元リポジトリです。
別のchannelに同じパッケージがある場合は、衝突を避ける必要がある。
基本的に同じパッケージはバージョンが新しいほど優先される。
通常はデフォルト、channelを指定して有効化する。pipyもチャネルの一つ。
パッケージを利用する場合は、まずcondaでパッケージを探します。
condaにない場合は、conda-forgeから探します。
conda-forgeにもない場合はpipを使ってインストールします。
ただしpipを使った場合、condaとの差異により互換性の問題が発生する場合があります。
ただcondaは可能な限り互換性を保つよう動作しようとします。
pipもcondaもAnadoncaに含まれているのでインストールの必要はありません。
Conda channels — conda 4.9.2.post26+f52f2bf4 documentation
conda install xxx --channel conda-forge
Managing environments — conda 4.9.2.post26+f52f2bf4 documentation
conda environmentを作ると同時にpipを入れる
conda install -n xxxx pip conda activate xxxx pip install xxx
これはcondaの仮想環境です。複数用意することが出来てそれぞれの仮想環境は影響を受けません。デフォルトではbaseという仮想環境が用意されます。
pythonのバージョンやcondaやpipでインストールするパッケージも分けることが出来ます。
Conda environments — conda 4.9.2.post26+f52f2bf4 documentation
Managing environments — conda 4.9.2.post26+f52f2bf4 documentation
conda info --envs
名前を指定しない場合はbase環境を有効化します。active化するとターミナルの左はしに(base)などと名前が表示されます。
conda activate conda activate xxxx
通常のpythonの参照に変わります。
conda deactivate
pythonのバージョンを指定できる。
conda create -n myenv conda create -n myenv python=3.6 conda remove -n myenv
環境を配布できる。(conda, pip両方対応)
conda env export > environment.yaml conda env create -f environment.yaml
テストケースを選択し、Xcodeのエディタの下のバーにある赤丸のRecordUITestボタンをクリックすると、画面操作した内容でコードが自動作成される。
func testTest() throws { // ここにカーソルを合わせて、赤丸ボタンRecordUITestをクリック }
XCTAssertXXXを使って正しいかどうかチェックします。
タイトルで指定できますが、identifierをつけたほうが良いと思います。
// 画面に必要な項目があるかチェック func testLayoutIsCorrect() throws { let app = XCUIApplication() // アプリという名前の項目を探す let titleLabel = app.staticTexts["アプリ"].exists XCTAssertTrue(titleLabel) let buttonLogin = app.buttons["ログイン"].exists XCTAssertTrue(buttonLogin) let textEmail = app.textFields["Email"].exists XCTAssertTrue(textEmail) }
アプリに同じ名前の項目があった場合はエラーになりますので、viewを指定してからその中のコントロールを指定するほうが良いです。
テキストフィールドに入力する場合は、キーボードを開いたりして時間がかかるので、sleepを使うとうまくいきます。
func testFillsAllInputs() throws { let app = XCUIApplication() // ビューを指定する let view = app.otherElements["SignUpFormView"] let username = view.textFields["userNameField"] username.tap() sleep(2) username.typeText("test user") let email = view.textFields["userEmailField"] email.tap() sleep(2) email.typeText("test457@test123.com") view.buttons["登録"].tap() }
func testShowsNewView() throws { let app = XCUIApplication() app.buttons["登録"].tap() // 遷移先の画面をナビゲーションバーの名前で確認(2秒まで待つ) let viewTitle = app.navigationBars["ユーザー登録"].waitForExistence(timeout: 2) XCTAssertTrue(viewTitle) }