業務でPythonを使うことになり、標準出力をテストしたかったのでメモとして
準備
- Python 3系
- pytest
pip install pytest
テスト対象コード
下記プログラムをテストしたいと思います。
say
メソッドで標準出力へ出すだけです。
hogehoge.py
class HogeHoge:
def __init__(self, name):
self.name = name
def say(self):
print("Hello ! My name is " + self.name + ".")
テストコード
pytest
にある fixture、capfdを使う
test_hogehoge.py
from hogehoge import HogeHoge
def test_say(capfd):
instance = HogeHoge("Taro")
instance.say()
out, err = capfd.readouterr()
assert out == "Hello ! My name is Taro.\n"
assert err is ''
[Sun Nov 24 17:58:49 2019] Running: c:\python\python.exe -m pytest
============================== test session starts ===============================
platform win32 -- Python 3.7.2, pytest-5.3.0, py-1.8.0, pluggy-0.13.1
rootdir: D:\Document\repository\study_pytest
collected 1 item
test\test_hogehoge.py . [100%]
=============================== 1 passed in 0.08s ================================
まとめ
標準出力のテストには、capfd
を使おう。標準エラーも取得できます。