1、Pytest -断言、跳过及运行
2、mark中的skip(跳过)
3、mark中的xfail(失败)
pytest.xfail()
咱们已经掌握了若是跳过执行测试用例,其中有一种方法是在测试函数中用pytest.skip()方法。咱们如今要学的pytest.xfail()和pytest.skip()有些类似,只不过他的含义是:将该用例标记成xfail失败,而且该用例中的后续代码不会执行,在测试用例中调用pytes.xfail()方法,能够选择传入reason参数表示缘由
#test_Pytest.py文件
#coding=utf-8
import pytest
class Test_Pytest():
def test_one(self,):
print("----start------")
pytest.xfail(reason='该功能还没有完成')
print("test_one方法执行" )
assert 1==1
def test_two(self):
print("test_two方法执行" )
assert "o" in "love"
def test_three(self):
print("test_three方法执行" )
assert 3-2==1
if __name__=="__main__":
pytest.main(['-s','-r','test_Pytest.py','test_Pytest.py'])
运行结果以下图:咱们能够看到该用例中pytest.xfail()方法以前的代码运行了,以后的再也不运行;结果中有一天用例被标记为xfail
这个方法是咱们直接将用例标记为失败,那什么状况咱们会这么作呢?功能未完成、已知有问题。除此以外,就是用例的执行须要前置条件或操做,若是前置条件或操做失败,那么咱们就能够直接将该用例设为失败,也就是xfail。api
@pytest.mark.xfail
除了上面学习的pytest.xfail(),xfail还有一种使用方法。就是@pytest.mark.xfail标签,他的含义是指望测试用例是失败的,可是不会影响测试用例的的执行。若是测试用例执行失败的则结果是xfail(不会额外显示出错误信息);若是测试用例执行成功的则结果是xpass。在测试用例上加上@pytest.mark.xfail标签。
#test_Pytest.py文件
#coding=utf-8
import pytest
class Test_Pytest():
@pytest.mark.xfail
def test_one(self):
print("test_one方法执行" )
assert 1==2
def test_two(self):
print("test_two方法执行" )
assert "o" in "love"
def test_three(self):
print("test_three方法执行" )
assert 3-2==1
if __name__=="__main__":
pytest.main(['-s','test_Pytest.py'])
运行结果以下图:能够看到咱们标记的用例确实运行了;由于断言失败因此结果是xfailed,也没有像正常同样显示出错误用例及具体信息。
如果把断言改为正确的,再运行一次,结果以下图:尽管咱们的用例正常运行经过,可是仍被标记为xpassed,而不是passed
5、使用自定义标记mark只执行部分用例