つかぱい.com

どうせなら好きなことを書いていたい

【Python】UnitTestをするためにやったこと

目次

  • 前提条件
  • そもそもUnitTestって何?
  • テストするためにやることどんなことが必要?
  • メソッド呼び出せない?
  • 入力する情報って何?
  • テストで正しいって証明するためにはどんなことが必要?

前提条件

黒い画面で操作がちょっとだけできる人 スペックはPythonが動けば何でも良い

そもそもUnitTestって何?

単体テスト(ユニットテスト)とは | ソフトウェアの検証の種類 | テクマトリックス株式会社

プログラムのメソッドなど、プログラムを構成する一番小さい粒度できちんとプログラムが機能しているかをテストすることを指します。 IT業界では単体テストなんて言われ方もする。

それぞれの言語で単体テストを行ってくれるライブラリが存在しています。 以下は例

余談ですがRubyなどではMinitestやRspecなどが単体テストの機構としてがあります。

テストするためにやることどんなことが必要?

PythonでUnitTestを実施するためには、テストコードを書いておくためのPyファイルを記述します。

詳しいテストを記述については日本語の公式ドキュメントがあるので参照してください。

unittest — ユニットテストフレームワーク — Python 3.8.6 ドキュメント

VSCodeなどを利用して次のようなファイルを作成していきます。

このケースでは意図的に失敗するテストケースを記載しています。

sample.py

import unittest

class TestStringMethods(unittest.TestCase):

    def test_false(self): 
        self.assertFalse("hoge", "hoge")

if __name__ == '__main__':
    unittest.main()

次にコンソール上でプログラムを実行してみます。

CLI上で実行する場合は、以下のようなコマンドでUnitTestを実行することができます。

python3 -m unittest sample.py

======================================================================
FAIL: test_false (test.sample.TestStringMethods)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/pcuser/Documents/GitHub/pysecret/test/sample.py", line 6, in test_false
    self.assertFalse("hoge", "hoge")
AssertionError: 'hoge' is not false : hoge

----------------------------------------------------------------------
Ran 1 test in 0.001s

FAILED (failures=1)

こんな感じに、FAILDが表示されて失敗していればOK もしERRORの表示が出ている場合はPythonの文法上の問題だったりするので、ググって見てください。

Pythonでよくあるエラーはこんなものがあったりします。 【参考のエラメッセージを入れる】

メソッド呼び出せない?

この後は実際にテストケースを記載していきます。

なるべく実践的なテストにするため、テスト対象となるプログラムを作成しておきます。

hello.py

def helloMethod(str):
    msg = str
    return msg

if __name__ == '__main__':
    main()

その後、test.pyにinport helloを追加し、helloMethodが呼び出せるようにしましょう。

入力する情報出力する情報って何?

今回は単純なオウム返しをするメソッドを作成しました。 入力として渡すものはメソッドの引数で渡す文字列のstr変数になります。 そして期待値としてはメソッドを実行したらstrが出力として返却されるという想定です。

import unittest
import hello

class TestStringMethods(unittest.TestCase):

    # def test_false(self):
    #     self.assertFalse("hoge", "hoge")
    
    def test_hello(self):
        input_str =  "Hello"
        msg = psmg.helloMethod(input_str)
        self.assertEqual(msg, input_str)

if __name__ == '__main__':
    unittest.main()

テストをクリアするにはどんなことが必要?

結果が正しいかの検証にはAssertメソッドを使ってmsg変数に格納された値とinput_strの値が同一であるということを確認します。

書き方としてはUnitTestクラスが持つAssertメソッドを使うのでself.assertEqualを使います。

ソース上ではすでに先程書いてあるのでUnitTest自体の起動を確認したコマンドと同じものを再度実行します。

python3 -m unittest sample.py

.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

コンソール上でOKの文字が表示されていればテストが成功しています。

development/Python

【Windows10】エクスペリエンスインデックスを見る方法

昔のPCを掘り起こしてスペックを確認したかったのだけれどもできなかったのでやり方を調べた

やり方

コマンドプロンプトPowerShellでwinsatコマンドを使う

winsat formal

結果ファイルは以下のフォルダに保存される。 C:\Windows\Performance\WinSAT\DataStore\(評価をした日付).Formal.Assessment.WinSAT

ローカルで確認する

PowerShellの場合はGet-CimInstanceコマンドで確認できる

Get-CimInstance Win32_WinSAT

Windows エクスペリエンスインデックス風の画面で確認する。

以下サイトにWINSATのファイルを貼り付ける

webmarks | {{ app.lang.app.desc }}

参考URL

実はWindows 10にも“Windows エクスペリエンス インデックス”が搭載されている!【いまさら聞けないWindows 10のTips】
Windows 8.1/10で「Windowsエクスペリエンスインデックス」値を計測する:Tech TIPS - @IT

Tools/windows

【Google】パスワードを利用せずにログインする方法

Googleでもスマートフォンによる認証ができるのでめんどくさい人は設定すると良いかも

https://myaccount.google.com/security

クックするとアカウントの設定画面に飛びます。

support.google.com

最新の情報は公式サイトを参照

以下手順

f:id:ferrari458tukapai:20200914193910p:plain

1 Googleのアカウント設定から、セキュリティを選択

2 「スマートフォンを使用してログイン」をクリック

f:id:ferrari458tukapai:20200914193932p:plain

3 設定するを押す

f:id:ferrari458tukapai:20200914193941p:plain

4 パスワードを入力して次へを押す

f:id:ferrari458tukapai:20200914193910p:plain

5 Googleアカウントにログインしているスマートフォンを選択して次へを押す

6 googleアカウントのパスワードを入力する。

f:id:ferrari458tukapai:20200914193903p:plain

7 スマートフォンGmailアプリかGoogleアプリに通知がくるのではいを選択する。

f:id:ferrari458tukapai:20200914193918p:plain

8 有効化するを選択したら設定が完了

Tools

【弐寺ログ】ALBIDA

昔友人がjubeatにハマっていたときにEvansと一緒にやろうって誘っくくれてハマった曲

Hyper譜面でも結構難しかった記憶がある。

そして、硬派な音ゲー沼に私をはめた曲の一つ

部活終わるたびにゲーセン行ってワンコイン遊んだのはいい思い出

おかげさまで、家に専コン買う人間に成長しましたとさ

【ビールコレクション】strawberry milk shake IPA🍓

f:id:ferrari458tukapai:20200815200957j:plain

IPAのキレはありつつ、いちご🍓の芳醇な香りが際立つビール

人工香料を使用していないのにすごいいちごの匂いがするのは製造過程で大量いちごを副原料として混ぜているかららしい。

その為、ビールはいちごの果肉がつぶつぶで残っている。

ベリー系を原料として天然酵母で作っているやつとおんなじ感じ

飲んだ感想

甘さ:⭐⭐⭐
キレ:⭐⭐
コク:⭐

ジュースのような甘さではなくいちごの香りを楽しみたい方は飲んでみるといいかも

知らないうちに自分の知ってるものがなくなっていく感覚はいつになっても慣れない

渋谷のハチ公前にいたあの緑の電車はとうとうあの場所から消えてしまうらしい。

ものすごく思い入れがあるかと言われるとそうでもないけど

自分の知っているものが変化してしまうことには戸惑いを感じてしまった。

ずっと自分の知っている街でいてほしいと思う反面、新しい物を取り入れてどんどんと進化してほしいという気持ちがあるからなんとも複雑な気分。

そもそも東京なんて昔ながらなものなんて殆どないことはよく知っているしそれでいいと思っていた。でも、変化を感じスピード感に自分が少しずつついていけてない

反応するものが、現実の世界からデジタルの中の出来事になってきたというのが大きいと思う。

多少センチメンタルな気分になったけど、また新しい出会いに期待していきたいね

こんどあそこには何ができるんだろ?

Starry Hillのテスト版を公開してみた

f:id:ferrari458tukapai:20200714230751p:plain

URL: Starry_Hill | フリーゲーム投稿サイト unityroom

今まで一人で作ってきたゲームの基礎的な部分をWebGLで遊べるようにしてみました。

今後少しずつアップデートできるようにしたい

ひとまずしょうもないゲームとしては遊べるので試しにプレイしてもらえると嬉しいです。