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

Pytest 命令在本地 VM 上执行测试

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'},'插件':{'html':'2.1.1','forked':'1.3.0', 'xdist':'2.1.0','元数据':'1.11.0'}}
根目录:/home/kulkarniabhi/pytaf,配置文件: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 链路封装:以太网 HWaddr 00:50:56:93:9a:1d  
          inet 地址:10.198.36.31 广播:10.198.39.255 掩码:255.255.252.0
          inet6 地址:fe80::250:56ff:fe93:9a1d/64 范围:链接
          UP BROADCAST RUNNING MULTICAST MTU:1500 Metric: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 发送队列:1
          RX 字节:1720657136(1.7 GB) TX 字节:1720657136(1.7 GB)


通过

==================================================== ================================================= 1 次通过, 18 在 0.03s 内取消选择 ============================================= ==================================================== =====

Pytest 命令在远程 VM ubuntu 上执行测试

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'},'插件':{'html':'2.1.1','forked':'1.3.0', 'xdist':'2.1.0','元数据':'1.11.0'}}
根目录:/home/kulkarniabhi/pytaf,配置文件: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

==================================================== ==================================================== ====== 1 在 8.04s 内通过 ======================================= ==================================================== =================

**我在本地和远程 vm 上的 pytest 版本 ==> **

[root@localhost]$ python3.6 -m py.test --version
pytest 6.0.2

我已经验证了最新的 pytest-xdist https://github.com/pytest-dev/pytest/issues/680支持--capture / -s选项

不需要在不捕获输出的情况下应用以下解决方法
pytest + xdist?

4

0 回答 0