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)

 

posted @ 2022-04-03 17:14  JJLiu  阅读(37)  评论(0编辑  收藏  举报