首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pytest多次收集相同的测试

Pytest多次收集相同的测试
EN

Stack Overflow用户
提问于 2020-03-03 11:11:37
回答 1查看 583关注 0票数 0

我有一个带有3个测试的测试文件。测试需要一个通过命令行传递的参数。在运行pytest --serial-port [port name]时,它说“收集了15项”。虽然应该只有3!

test_xyz.py

代码语言:javascript
复制
import os
import time
import serial
from plot import plot_file


def test_abc(serial_port):
    # test code here


def test_xyz(serial_port):
    # test code here


def test_pqr(serial_port):
    # test code here

conftest.py

代码语言:javascript
复制
def pytest_addoption(parser):
    parser.addoption("--serial-port", help="Target serial port")
    parser.addoption('--count', default=1, type='int', metavar='count',
                     help='Run each test the specified number of times')


def pytest_generate_tests(metafunc):
    if "serial_port" in metafunc.fixturenames:
        serial_port = metafunc.config.getoption("serial_port")
        if serial_port:
            metafunc.parametrize("serial_port", serial_port)
        else:
            raise EnvironmentError('Target serial port not specified. Use --serial-port [serial port]')

环境:Python3.8.1 Pytest 5.3.5

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-03 13:21:49

您可能正在使用由5位数字组成的串口运行pytest,如下所示:

pytest --serial-port 12345

您的test_xyz.py中有3个函数。

那么到底发生了什么?您正在参数化串行端口,这是一个字符串。这些测试实际上是使用serial_port = "1"serial_port = "5"的值运行的。

conftest.py中的这一行将导致测试被调用5*3次。

代码语言:javascript
复制
metafunc.parametrize("serial_port", serial_port)

您可以将conftest更改为:

代码语言:javascript
复制
import pytest


def pytest_addoption(parser):
    parser.addoption("--serial-port", help="Target serial port")
    parser.addoption('--count', default=1, type='int', metavar='count',
                     help='Run each test the specified number of times')

@pytest.fixture(scope='session')
def serial_port(request):
    port = request.config.option.serial_port
    if port is None:
        pytest.skip()
    return port
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60505953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档