Python 求助:pytest 的 skipif 怎么与 fixture 联合起来?

trimQiu · 2019年12月04日 · 最后由 trimQiu 回复于 2019年12月06日 · 1217 次阅读

各位:
目前我正准备使用 pytest 框架进行测试,但是需要增加自定义命令行参数。因此,用了一个 fixture mySta 来获取命令行输入的参数,该参数有两个状态,sta1 和 sta2。然后,在测试用例中,我想根据 mySta 的值对某些测试用例进行 skip。
预想的是用 mySta==“sta1” 来作为 skipif 的条件,但是好像这样用是错误的。我该怎么写 skipif 的条件呢?

共收到 4 条回复 时间 点赞

我就是这么用的。
关键看你参数传递对不对,格式是否匹配,多调试一下就好

我用的是@pytest.mark.skipif(mySta=="sta1"),提示错误:E NameError: name 'mySta' is not defined。我应该怎么在 mark 中使用 fixture 的名称呢?

trimQiu 回复

你要把完整代码贴出来才知道哪里的问题啊
看报错是没定义这个变量,看下是不是没 import

mySta 是个 fixture 函数的名字,直接写在 conftest.py 中,应该不需要 import。另外,在调用该 fixture 的 testcase 内部也使用正常,只不过在@pytest.mark.skipif语句中无法直接使用。我想问的也是,怎么在这种语句中直接检查 fixture 函数返回的值。

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