ローカル マシンでテストを実行すると、テスト ケースからのコンソール出力が表示されます。ただし、pytest を使用してリモート マシンでテストを実行している間、コンソール出力はキャプチャされません。これがサンプルテストケースです -
test_sample.py
import os
import pytest
@pytest.mark.set1
def test_command():
output = os.popen("ifconfig")
print(output.read())
pytest.ini
[pytest]
markers =
set1: mark a test as a set1.
set2: mark a test as a set2.
~/.ssh/config
Host ubuntu
HostName 10.203.114.68
User root
Port 22
IdentityFile ~/.ssh/id_rsa
ローカル VM でテストを実行する Pytest コマンド
py.test -s -m set1 -k test_command -v
コンソール出力
================================================== ================================================== ===== テストセッション開始 ========================================= ================================================== ============= プラットフォーム Linux -- Python 3.6.12、pytest-6.0.2、py-1.9.0、pluggy-0.13.1 -- /usr/bin/python3.6 キャッシュディレクトリ: .pytest_cache メタデータ: {'Python': '3.6.12', 'プラットフォーム': 'Linux-4.4.0-142-generic-x86_64-with-Ubuntu-16.04-xenial', 'パッケージ': {'pytest': '6.0 .2', 'py': '1.9.0', 'pluggy': '0.13.1'}, 'Plugins': {'html': '2.1.1', 'forked': '1.3.0', 'xdist': '2.1.0', 'メタデータ': '1.11.0'}} rootdir: /home/kulkarniabhi/pytaf、configfile: pytest.ini プラグイン: html-2.1.1、forked-1.3.0、xdist-2.1.0、metadata-1.11.0 19 アイテムを集めた / 18 アイテムを選択しなかった / 1 アイテムを選択した test_demo5.py::test_command ens160 リンク encap:イーサネット HWaddr 00:50:56:93:9a:1d inet アドレス:10.198.36.31 Bcast:10.198.39.255 マスク:255.255.252.0 inet6 アドレス: fe80::250:56ff:fe93:9a1d/64 スコープ: リンク アップ ブロードキャスト 実行中 マルチキャスト MTU:1500 メトリック:1 RX パケット:1748980902 エラー:0 ドロップ:5419 オーバーラン:0 フレーム:0 TX パケット:54277009 エラー:0 ドロップ:0 オーバーラン:0 キャリア:0 衝突:0 txqueuelen:1000 RX バイト:252392842770 (252.3 GB) TX バイト:101276948055 (101.2 GB) lo リンクのカプセル化:ローカル ループバック inet アドレス:127.0.0.1 マスク:255.0.0.0 inet6 アドレス: ::1/128 スコープ: ホスト アップ ループバック実行中 MTU:65536 メトリック:1 RX パケット:5683112 エラー:0 ドロップ:0 オーバーラン:0 フレーム:0 TX パケット:5683112 エラー:0 ドロップ:0 オーバーラン:0 キャリア:0 衝突:0 txqueuelen:1 RX バイト:1720657136 (1.7 GB) TX バイト:1720657136 (1.7 GB) 合格した ================================================== =============================================== 合格者1名、0.03 秒で 18 の選択解除 ========================================== ================================================== =====
リモート VM ubuntu でテストを実行する Pytest コマンド
py.test -d --tx ssh=ubuntu//python=python3 --rsyncdir ~/pytaf/ -s -m set1 -k test_command -v
コンソール出力
================================================== ================================================== ===== テストセッション開始 ========================================= ================================================== ============= プラットフォーム Linux -- Python 3.6.12、pytest-6.0.2、py-1.9.0、pluggy-0.13.1 -- /usr/bin/python3.6 キャッシュディレクトリ: .pytest_cache メタデータ: {'Python': '3.6.12', 'プラットフォーム': 'Linux-4.4.0-142-generic-x86_64-with-Ubuntu-16.04-xenial', 'パッケージ': {'pytest': '6.0 .2', 'py': '1.9.0', 'pluggy': '0.13.1'}, 'Plugins': {'html': '2.1.1', 'forked': '1.3.0', 'xdist': '2.1.0', 'メタデータ': '1.11.0'}} rootdir: /home/kulkarniabhi/pytaf、configfile: pytest.ini プラグイン: html-2.1.1、forked-1.3.0、xdist-2.1.0、metadata-1.11.0 gw0 Iroot@10.203.114.68 のパスワード: ********** [gw0] Linux Python 3.8.5 cwd: /home/bit9qa/pyexecnetcache [gw0] Python 3.8.5 (デフォルト、2020 年 7 月 28 日 12:59:40) -- [GCC 9.3.0] gw0 [1] LoadScheduling によるテストのスケジューリング test_demo5.py::test_command [gw0] 渡された test_demo5.py::test_command ================================================== ================================================== ====== 8.04 秒で 1 通 ====================================== ================================================== ================
**ローカルとリモートの両方の vm での私の pytest バージョン ==> **
[root@localhost]$ python3.6 -m py.test --version pytest 6.0.2
--capture / -sオプションが最新の pytest-xdist
https://github.com/pytest-dev/pytest/issues/680でサポートされていることを確認済みです
出力をキャプチャせずに次の回避策 pytest + xdistを適用する必要はあり
ませんか?