接口测试 pytest dependency 无法单独运行单个 case?

花菜 · 2020年07月07日 · 最后由 花菜 回复于 2021年10月20日 · 2799 次阅读

官方的代码

# test1.py
import pytest


@pytest.mark.dependency()
@pytest.mark.xfail(reason="deliberate fail")
def test_a():
    assert False


@pytest.mark.dependency()
def test_b():
    pass


@pytest.mark.dependency(depends=["test_a"])
def test_c():
    pass


@pytest.mark.dependency(depends=["test_b"])
def test_d():
    pass


@pytest.mark.dependency(depends=["test_b", "test_c"])
def test_e():
    pass

  • 整个文件执行运行是没问题的
  • 直接运行test_d,直接跳过了
    test_d依赖test_b,如果test_b不通过,那么test_d通过是正常的
  • 单独运行test_b是可以通过的

  • 不知道为何单独运行test_d就会跳过了

共收到 6 条回复 时间 点赞

日志中没看出 test_b 有执行通过呀。
貌似这个插件文档里,没提及它具备自动追溯依赖用例并自动执行的能力吧?

它依赖的用例执行失败或未执行,这个用例都是会跳过的,你只执行 d 是不行的

陈恒捷 回复

我单独运行 test_b 是没问题的.
后面想想,它这里的依赖,是指整个文件运行的时候,test_d 才会检查 test_b 是否运行成功.

你可以在 pytest.ini 加个参数控制禁用该插件
addopts=-p no:dependency

你好:请问 “我目前的做法封装一个 http 接口来转发 mqtt,这样就跟测试普通的 http 接口一样发送请求了。至于结果的话,就看你们写到什么地方了。我们是写到 redis,我又封装了一个 http 查询 redis 的接口。这样就把请求和响应结果全部转成最熟悉的 http 了”,这个地方 http 接口转发 mqtt 大概是怎么实现的吗?

cherry_blossom 回复

很简单,http 接口接收到参数,启动 mqtt 的生产者,发送就行

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册