概要
Python製のサーバーテストツールTestinfraを試してみました。
GitHub philpep/testinfra: Testinfra test your infrastructures
テストファイルを用意
test_docker.py
といったファイル名で用意します。
# Docker def test_docker_engine_is_installed(Package): docker_engine = Package("docker-engine") assert docker_engine.is_installed assert docker_engine.version.startswith("1.13.1") def test_docker_engine_running_and_enabled(Service): docker_engine = Service("docker") assert docker_engine.is_running assert docker_engine.is_enabled # td-agent def test_td_agent_is_installed(Package): td_agent = Package("td-agent") assert td_agent.is_installed def test_td_agent_running_and_enabled(Service): td_agent = Service("td-agent") assert td_agent.is_running assert td_agent.is_enabled
関数名はtest_
から始める必要があります。
実行
testinfra -v test_docker.py --connection=ssh --hosts=example.com
-v
テスト結果を詳細に出すオプションです。
実行例
td-agentを自動起動設定していない状態で実行してみます。
td-agentを自動起動設定のテストだけ失敗するはずです。
plugins: testinfra-1.5.3 collected 4 items test_docker.py::test_docker_engine_is_installed[ssh://example.com] PASSED test_docker.py::test_docker_engine_running_and_enabled[ssh://example.com] PASSED test_docker.py::test_td_agent_is_installed[ssh://example.com] PASSED test_docker.py::test_td_agent_running_and_enabled[ssh://example.com] FAILED ===== FAILURES ===== _____ test_td_agent_running_and_enabled[ssh://example.com] _____ Service = <class 'testinfra.modules.base.SystemdService'> def test_td_agent_running_and_enabled(Service): td_agent = Service("td-agent") assert td_agent.is_running > assert td_agent.is_enabled E assert False E + where False = <service td-agent>.is_enabled test_docker.py:20: AssertionError ===== pytest-warning summary ===== WP1 None Module already imported so can not be re-written: testinfra ===== 1 failed, 3 passed, 1 pytest-warnings in 10.92 seconds =====
1個だけテストが失敗している様子が分かります。