You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pytest-dependency跨模块时测试用例被跳过的问题求助

解决pytest-dependency跨模块测试依赖被跳过的问题

问题根源

你遇到的问题核心是两个点:

  1. 跨模块依赖的节点ID格式错误:pytest-dependency的depends参数需要使用相对于rootdir的节点ID,你当前用了带根目录前缀的全路径(比如TestOrderDependencies/test_mod_01.py::a),和pytest内部识别的节点ID不匹配
  2. 同名测试标记冲突:test_mod_01.py中模块级test_b和类内test_b共用了name="b"标记,会导致依赖识别混乱

解决方案

步骤1:修正test_mod_01.py的同名标记

给类内的测试用例设置唯一标记名,避免与模块级测试冲突:

import pytest

@pytest.mark.dependency(name="a")
def test_a():
    pass

@pytest.mark.dependency(name="b")
def test_b():
    assert True

@pytest.mark.dependency(name="c", depends=["a"])
def test_c():
    pass

class TestClass(object):
    # 修改为唯一标记名,比如class_b
    @pytest.mark.dependency(name="class_b", depends=["c"])
    def test_b(self):
        pass

步骤2:修正test_mod_02.py的依赖路径

去掉根目录前缀,使用相对于rootdir的节点ID格式,同时更新类测试的依赖标记:

import pytest

# 重命名标记,避免和test_mod_01的a冲突
@pytest.mark.dependency(name="mod2_a")
def test_a():
    assert True

@pytest.mark.dependency(name="e",
                        depends=["test_mod_01.py::a",
                                 "test_mod_01.py::c"],
                        scope='session'
                        )
def test_e():
    pass

@pytest.mark.dependency(name="f",
                        depends=["test_mod_01.py::b",
                                 "test_mod_02.py::e"],
                        scope='session'
                        )
def test_f():
    pass

@pytest.mark.dependency(name="g",
                        depends=["test_mod_01.py::class_b"],
                        scope='session'
                        )
def test_g():
    pass

验证执行结果

修改后执行pytest,所有依赖测试会正常执行,输出示例:

rootdir: /Users/xxxx/PycharmProjects/TestOrderDependencies
plugins: order-1.2.0, dependency-0.5.1
collected 8 items

test_mod_01.py::test_a PASSED
test_mod_01.py::test_b PASSED
test_mod_01.py::test_c PASSED
test_mod_01.py::TestClass::test_b PASSED
test_mod_02.py::test_a PASSED
test_mod_02.py::test_e PASSED
test_mod_02.py::test_f PASSED
test_mod_02.py::test_g PASSED

================================================================================================== 8 passed in 0.03s ====

内容的提问来源于stack exchange,提问作者Harry Kane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 22:50:20