Pythonのpytestで-sオプションを試してみた

はじめに

この記事では、「pytestの-sオプションの機能と試してみた結果」について書いています。

私はこれまでpytestを使ったことはほぼなく、pytestの勉強をしていますが、pytestには色々なオプションがあるので、その中の--sオプションについて、どういう機能なのか、実際に使ってみてどうなのかをまとめて記事を書きました。

自分に向けた備忘録の意味もありますが、「pytest使いたいけどよく知らない」な人の一助になれば嬉しいです。

要点だけ

  • pytest -sではテスト実行中にprint文を標準出力に出力することができます。
  • 単純に結果だけでなく途中の変数の状態などを見たい時などに役に立ちます。

前提(環境)

以下の環境で実験をしていきます。

試してみた

まず、適当なpythonファイル(名前は何でも良いですが、ここではtest_add.pyとしました)を作り、中に以下のコードを書きます。

def test_add1():
    print("in test_add_1")
    assert 3 == 1 + 2

def test_add2():
    print("in test_add_2")
    assert 4 == 1 + 3

このファイルに対してテストを実施していきます。まずはpytestです。

================================================= test session starts =================================================
platform win32 -- Python 3.9.4, pytest-7.1.3, pluggy-1.0.0
rootdir: C:\Users\xxx\sample
plugins: anyio-3.6.1
collected 2 items

test_add.py ..                                                                                                   [100%]

================================================== 2 passed in 0.04s ==================================================

print文の内容は出力されていません。では続いてpytest -s-sオプションを付けて実行してみると出力はどうなるでしょうか

================================================= test session starts =================================================
platform win32 -- Python 3.9.4, pytest-7.1.3, pluggy-1.0.0
rootdir: C:\Users\xxx\sample
plugins: anyio-3.6.1
collected 2 items

test_add.py in test_add_1
.in test_add_2
.

================================================== 2 passed in 0.03s ==================================================

7行目、test_add.pyの記述の後にprint文の内容(in test_add_1, その下の行にはin test_add_2)が追加されていることが分かります。

おわりに

「pytestの-sオプションの機能と試してみた結果」について解説しました。

この方法を知っておくと、「テストの結果と共に途中の変数の状態などを見たい」時などに役に立つかと思います。

さいごに、記事を書く上で参考にしたサイトのリンクを以下に掲載します。合わせて読んでいただくと良いかと思います。

syachiku.net