pytest教程-6-skip跳过测试用例

上一节我们详细的讲解了pytest自定义标记测试用例的方法,本小节我们学习一下pytest跳过测试用例的方法。

在我们自动化过程中,经常会遇到功能阻塞、功能未实现、环境等一系列外部因素问题导致的一些用例执行不了,这时我们就可以用到跳过skip用例,如果我们注释掉或删除掉这段代码,当然也能达到效果,但是后面还要进行恢复操作,很麻烦不智能。

pytest跳过测试用例:

无条件跳过,@pytest.mark.skip(reason="跳过的原因,会在执行结果中打印")

有条件跳过,@pytest.mark.skipif(条件表达式,reason="跳过的原因,会在执行结果中打印")

无条件跳过测试用例

  • 标记在函数中

import pytest

@pytest.mark.skip(reason = "不执行")
def test_case1():
    print("第一个测试用例")

def test_case2():
    print("第二个测试用例")

注:在函数上方加入@pytest.mark.skip(reason = "不执行")后,该函数不会执行,并且会打印出不执行的原因

  • 标记在类的方法中

import pytest

class TestCase(object):

    @pytest.mark.skip(reason="没有完成,不执行")
    def test_case1(self):
        print("第一个测试用例")

    def test_case2(self):
        print("第二个测试用例")
  • 标记在类中

import pytest

@pytest.mark.skip(reason="这个类的所有不执行")
class TestCase1(object):

    def test_case1(self):
        print("第一个测试用例")

    def test_case2(self):
        print("第二个测试用例")
  • 标记在模块中,这个py文件都不执行

import pytest

pytest.skip(allow_module_level=True)
class TestCase1(object):

    def test_case1(self):
        print("第一个测试用例")

    def test_case2(self):
        print("第二个测试用例")
  • 在测试期间强制跳过

import pytest

def test_dome():
    for i in range(20):
        print(f"第{i}个用例")
        if i == 5:
            pytest.skip("跑不动了,不在执行")

注:当i为5时,就不会在执行了,直接跳出循环了,与break相似

有条件的跳过测试用例

注:作用在函数、方法、类、模块中都和无条件跳过测试用例用法一致

语法:@pytest.mark.skipif(条件表达式,reason=“跳过的原因”)

示例1:当操作系统为win32时,不执行

import pytest
import sys

@pytest.mark.skipif(sys.platform == "win32", reason="操作系统为win32不执行")
def test_case1():
    print("执行第一个测试用例")

def test_case2():
    print("执行第一个测试用例")

注:当操作系统为win32时,test_case1不会执行,只有当操作系统不为win32时才会执行test_case1

示例2:可以将 pytest.mark.skip 和 pytest.mark.skipif 赋值给一个标记变量

import pytest
import sys

# 不满足条件不执行
markskipif = pytest.mark.skipif(sys.platform == "win32", reason="操作系统为win32不执行")
# 直接强制不执行
markskip = pytest.mark.skip("本次不进行测试")

@markskip
def test_case1():
    print("执行第一个测试用例")
@markskipif
def test_case2():
    print("执行第二个测试用例")

def test_case3():
    print("执行第三个测试用例")

注:直接用装饰器的方式调用即可

示例3:若有多个模块的测试用例需要用到相同的 skip 或 skipif ,可以用一个单独的文件去管理这些通用标记,然后适用于整个测试用例集

标记文件

import pytest
import sys

# 不满足条件不执行
markskipif = pytest.mark.skipif(sys.platform == "win32", reason="操作系统为win32不执行")
# 直接强制不执行
markskip = pytest.mark.skip("本次不进行测试")

测试用例

from scripts.metting import markskip,markskipif

@markskip
def test_case1():
    print("执行第一个测试用例")
@markskipif
def test_case2():
    print("执行第二个测试用例")

def test_case3():
    print("执行第三个测试用例")

注:把标记单独放在一个文件中,测试用例中如果需要用到直接用装饰器的方式直接调用即可

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走,希望可以帮助到大家!

你可能感兴趣的:(pytest教程,pytest,测试用例)