pytest -mark skip&xfail
1. skip跳过
自动化测试过程中,可能会遇到环境问题、已知bug、未完成接口等情况需要跳过用例,这时就需要用到pytest.mark.skip()或pytest.mark.skipif()
@pytest.mark.skip(reason) 只要有此标记就跳过,无条件
@pytest.mark.skipif(condition,reason="跳过原因") 满足输入的条件,就跳过
适用范围:
- 放在测试类前面,跳过该类下的所有用例
- 放在方法或者测试用例前面,跳过此方法或测试用例
直接跳过 可加参数reason=“跳过原因”
@pytest.mark.skip(reason="跳过该用例") @pytest.mark.parametrize(["a","b","c"],[(1,2,3),(3,4,7)]) def test_list(self,a,b,c): assert a+b == c print(a+b)
满足条件跳过,即condition返回值为true
@pytest.mark.parametrize(["a","b","c"],[(1,2,3),(3,4,7)]) @pytest.mark.skipif(1==1,reason = "跳过该用例") def test_list(self,a,b,c): assert a+b == c print(a+b)
将skip赋值给变量,可多处调用
myskip = pytest.mark.skip(reason="跳过a,b相关用例") class Test_param: @myskip def test_param(self,a=1,b=2): assert a+b == 4 print(a+b) #测试单个参数 @myskip @pytest.mark.parametrize("a",["test123456","test2222"]) def test_a(self,a): print(a) #测试多个参数 @myskip @pytest.mark.parametrize("a,b",[(1,2),(3,4)]) def test_two_param(self,a,b): print(a+b)
2. xfail 该用例置为失败
已经知道该用例结果是失败的,又不想跳过,可以用xfail
xfail不会影响测试用例的执行,如果执行成功则报xpass,如果失败就会报xfail
#运行结果为xpass @pytest.mark.xfail() def test_normal(self,c=10): print(c) #运行结果为xfail @pytest.mark.xfail() @pytest.mark.parametrize(["a","b","c"],[(1,2,3),(3,4,7)]) def test_list(self,a,b,c): assert a+b != c print(a+b)
用例中标记失败,用pytest.xfail标记的测试用例,执行到这一句时,直接置为xfail,没有xpass
data1 = { "test1":"test1", "test2":"test2" } @pytest.mark.parametrize("test",data1.items()) def test_json(self,test): pytest.xfail(reason='该功能未完成') print(test)

浙公网安备 33010602011771号