Pythonでpytestを実行する

Python学習【365日チャレンジ!】180日目のマスターU(@Udemy11)です。

2017年にバブルが弾けたビットコインが、知らない間に100万円を超えてじわりじわりと価格が上がっていることはあまり知られていないかもしれませんが、まだ仮想通貨バブルの頃まで戻ってはいません。

投資というより、投機に近い仮想通貨ですが、今が投資するチャンスかも知れませんね。

なくなってもいい余剰資金で仮想通貨を購入しておけば、数年後にはちょっとしたお小遣いになっているかもしれませんよ。

昨日の復習

昨日は、pytestでsetupとteardownを使う方法を学習しました。

テストの前後になにかの処理をしたいときにはsetupとteardownを使いましたが、pytestでは、いくつかのテストが始まる前と最後のテストが終了したときに処理をさせることができました。

処理をしていることがわかりやすいようにprint出力でコメントを出力しましたが、テストの際に使用頻度の高いやり方なので、しっかりとマスターしておきましょう。

pytestのsetupとteadowmの使い方の詳細は、昨日の記事をごらんください。

今日は、pytestでテストをスキップする方法を学習します。

普通にスキップ

unittestと同じように、デコレーターを使って単純にテストをスキップすることができます。

import pytest

import calculation

class TestCal(object):

    def setup_method(self,method):
        print('method={}'.format(method.__name__))
        self.cal = calculation.Cal()

    def teardown_method(self, method):
        print('method={}'.format(method.__name__))
        del self.cal

    def test_add_and_double(self):
        assert self.cal.add_and_double(1, 3) == 8

    @pytest.mark.skip(reason='no need')
    def test_add_and_double_raise(self):
        with pytest.raises(ValueError):
            self.cal.add_and_double('1', '3')

スキップするテストは2つ目で、ハイライトしている18行目にデコレーターのpytest.mark.skipを使用します。

引数のreasonには、スキップする理由を付け加えることが可能です。

この出力結果は次のとおりです。

Python pytestでテストをスキップする方法

1つ目のテストの前後にsetupteardownでプリント出力があり、最後にスキップのreasonが出力されています。

コンソールの出力はPycharmのバージョンによって違いますが、きちんとスキップ理由を出力するには、Pycharmの【Edit Configrations】からpytestのファイルを選び、【Additional Arguments:】に-rsと入力して【OK】をクリックします。

Python pytestでテストをスキップする方法

これで同じテストファイルを実行すると、short test summary infoが表示されます。

Python pytestでテストをスキップする方法

続いてunittestでもやった条件をつけたスキップのコードを書いてみましょう。

条件をつけてスキップ

ある条件のときだけテストをスキップするには、グローバル変数を定義して、定義した条件にあっていれば、テストをスキップするというコードを書きました。

すべてのコードを書くと、コードが長くなってしまうので、付け加える行とコードだけ書いてみます。

is_release = True
@pytest.mark.skipif(is_release=True, reason='no need')

グローバル変数の定義する4行目を加えて、18行目のskipskipifに変えて、引数に条件を入れてやることで、条件を満たしたときだけテストをスキップします。

Python pytestでテストをスキップする方法

行を挿入しているので、short test summary infoでは、20行目になっていますが、テストがスキップされたのがわかるかと思います。

もちろん、条件をTrueからFalseに変更すれば、テストはスキップされずに実行されるので、一度試してみてください。

自分で試す

現在私がPythonを学習しているのは、シリコンバレーでバリバリ活躍している酒井さんのPython講座です。

Udemy講師 酒井さん プログラミング Python

内容がすごく濃いので終了するまでにかなり時間がかかりますが、ひととおり学習できればかなりPythonのスキルが向上すると思います。

ただ、レクチャーを見ているだけでは自分のスキルにはなりません。

レクチャーを見て、自分でもコードを書いて、さらに疑問に思うことや試してみたいことを自分で試すことが大切です。

やってみないことにはどのように動くかを体験できませんし、よほどの天才でない限り、人は体験したことしか実感できません。

体験することで理解が深まるので、ぜひ、いろいろと試してみましょう!

それでは明日もGood Python!