1

ローカル マシンでテストを実行すると、テスト ケースからのコンソール出力が表示されます。ただし、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を適用する必要はあり ませんか?

4

0 に答える 0