pytest注释了@pytest.mark.skipif,但是case仍跳过了

def is_mtenant():
    for i in x:
        if condition:
            return True
        else:
            return Flase

def find_mtenant():
    for i in x:
        if condition:
          	return [{"Name"}]
        else:
            return []


@pytest.mark.skipif(not is_mtenant(), reason="跳过")
@pytest.mark.parametrize("some", find_mtenant())
def test_something(some):
    do someting

1.在不同环境调试代码时,一开始已经跑通了,但换了一个环境后,不管我怎么调试,case都被跳过了
2.一开始查找原因是因为新的环境is_mtenant()没有找到符合预期的值,于是返回为False了,当我想继续回到有预期值环境调试的时候,发现我注释了@pytest.mark.skipif,他还是跳过了这个case,不论我怎么修改注释,都会跳过
3.在排查了一下午后,原因是因为我上面两个方法第一个是判断是否存在,然后使用@pytest.mark.skipif跳过,如果没跳过就用find_mtenant()去获取他的值,于是乎,新的环境是没有预期值的,就返回了一个空的列表参数。当使用@pytest.mark.parametrize进行传参时,有个特性,如果传入的参数为空,默认就直接跳过。。。
4.也算是代码中的bug,改写了find_mtenant()后就正常了

def find_mtenant():
    for i in x:
        if condition:
          	return [{"Name"}]
    return []
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值