Python 如何强制pytest运行每个测试(停止跳过未标记为skip的测试)?

Python 如何强制pytest运行每个测试(停止跳过未标记为skip的测试)?,python,pytest,Python,Pytest,Pytest在从命令行运行时,会一直跳过一些参数化测试,即使我没有告诉它这样做。奇怪的是,在VSCode中使用命令选项板运行时,它并没有跳过测试 我试着分别运行测试和测试文件,并调整命令行选项,但都没有效果。想必,我缺少一些微妙的配置。你能帮忙吗 示例测试 辅助功能(支持参数化) 从命令选项板在VSCode中运行此项目会产生: platform darwin -- Python 3.7.2, pytest-4.1.0, py-1.7.0, pluggy-0.8.1 rootdir: ... ,

Pytest在从命令行运行时,会一直跳过一些参数化测试,即使我没有告诉它这样做。奇怪的是,在VSCode中使用命令选项板运行时,它并没有跳过测试

我试着分别运行测试和测试文件,并调整命令行选项,但都没有效果。想必,我缺少一些微妙的配置。你能帮忙吗

示例测试 辅助功能(支持参数化) 从命令选项板在VSCode中运行此项目会产生:

platform darwin -- Python 3.7.2, pytest-4.1.0, py-1.7.0, pluggy-0.8.1
rootdir: ... , inifile:
plugins: cov-2.6.1
collected 79 items

test_1.py ........................................         [ 50%]
test_2.py ...................................              [ 94%]
test_3.py ....                                             [100%]

generated xml file: 
/var/folders/pn/y4jjr_t531g3x3v0s0snqzf40000gn/T/tmp-...
========================== 79 passed in 0.55 seconds ===========================
但是从命令行运行相同的测试会产生:

=============================== test session starts ===============================
platform darwin -- Python 3.7.2, pytest-4.1.0, py-1.7.0, pluggy-0.8.1
rootdir: ... , inifile:
plugins: cov-2.6.1
collected 59 items

test_1.py ssss...................s.....                           [ 49%]
test_2.py s.......................ss.s                            [ 96%]
test_3.py s.                                                      [100%]

====================== 49 passed, 10 skipped in 0.42 seconds ======================
如何让pytest收集并运行完整的76项?我没有在VSCode中使用任何特殊选项。我不明白为什么pytest在没有被告知的情况下跳过测试

谢谢

pytest将自动“跳过”已参数化但没有条目的测试

最简单的例子是:

@pytest.mark.parametrize('a', ())
def test(a): pass
和输出

$ pytest -v t.py 

...

t.py::test[a0] SKIPPED                                                    [100%]

=========================== 1 skipped in 0.02 seconds ===========================

这里的问题可能是两个执行环境,当前工作目录或类似的环境导致数据采集在终端中返回零结果,但从vscode运行时返回实际结果。我会检查您当前的工作目录和您首先激活的virtualenv,然后从那里进行调试。甚至可能在
get\u samples
/
get\u id

中放置一个断点,我会检查
get\u samples
在从命令行运行时是否没有返回一些测试的空列表。当
pytest
收到
parametrize
标记中的空参数列表时,跳过测试;我怀疑这就是发生在你身上的事。它可能是在VSCode中运行的,因为不同的根目录或不同的环境等接收完整的参数列表。谢谢。事实证明,我没有正确配置相对路径,因此如果pytest是从项目根目录以外的其他位置运行的,那么它就找不到输入文件。谢谢。结果证明我没有正确配置路径,因此如果测试是从项目根目录以外的其他地方运行的,pytest就找不到它们。
@pytest.mark.parametrize('a', ())
def test(a): pass
$ pytest -v t.py 

...

t.py::test[a0] SKIPPED                                                    [100%]

=========================== 1 skipped in 0.02 seconds ===========================