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 []