zoukankan      html  css  js  c++  java
  • Pytest学习(七)

    前言

    作为一个java党,我还是觉得pytest和testng很像,有时候真的会感觉到代码语言在某种程度上是相通的,那么今天来说说这两个知识点。

    skipskipif,见名知意,就是跳过测试呗,直白的说就是用于不想执行的代码,标记后,标记的代码不执行。

    skip的用法

    使用示例:@pytest.mark.skip(reason="不想执行的原因,执行时会输出reason内容")

    1、标记在函数方法上

    示例代码如下:

    # 标记在函数上
    @pytest.mark.skip(reason="标记在函数上,被标记函数不会被执行!!")
    def test_case2():
        print("我是测试用例2,但我不会执行")
    

    运行结果如下:

    2、标记在类中的函数方法上

    示例代码如下:

    class TestClass1(object):
    
        def test_case3(self):
            print("我是用例3")
    
        # 标记在类中的函数上
        @pytest.mark.skip(reason="标记在类中的函数上,同样也不会执行哦!")
        def test_case4(self):
            print("我是测试用例4,但我不会执行")
    
    

    运行结果如下:

    3、标记在类上

    示例代码如下:

    @pytest.mark.skip(reason="标记在类上,整个类及类中的方法都不会执行!")
    class TestClass2(object):
        def test_case5(self):
            print("我是用例5")
    

    运行结果如下:

    小结:

    • @pytest.mark.skip 可以加在函数上,类上,类方法上
    • 如果加在类上面,类里面的所有测试用例都不会执行

    4、在测试用例执行期间强制跳过

    以简单的for循环为例,执行到第三个的时候,跳出,示例代码如下:

    def test_case6():
        for i in range(50):
            print(f"输出第 【{i}】个数")
            if i == 3:
                pytest.skip("我跑不动了,不输出了")
    

    运行结果如下:

    总结:
    可以理解为这时的跳过测试就和循环的break一样,这时不再用注解的形式了。

    5、在模块级别跳过测试

    语法:pytest.skip(msg="",allow_module_level=False),当 allow_module_level=True 时,可以设置在模块级别跳过整个模块,示例代码如下:

    # -*- coding: utf-8 -*-
    # @Time    : 2020/11/12 20:30
    # @Author  : longrong.lang
    # @FileName: test_skip.py
    # @Software: PyCharm
    # @Cnblogs :https://www.cnblogs.com/longronglang
    import sys
    
    import pytest
    
    if sys.platform.startswith("win"):
        pytest.skip("当 allow_module_level=True 时,可以设置在模块级别跳过整个模块",allow_module_level=True)
    
    
    @pytest.fixture(autouse=True)
    def dataTable():
        print("数据初始化成功")
    
    
    def test_case1():
        print("我是用例1")
    

    运行结果如下:

    6、希望有条件地跳过某些测试用例

    语法:@pytest.mark.skipif(条件表达式, reason="")
    示例代码如下:

    @pytest.mark.skip(sys.platform.startswith("win"),reason="windows系统不执行哦")
    def test_case7():
        print("我是用例6")
    

    运行结果如下:

    7、跳过标记的使用

    好处

    • 方便用例的统一管理维护
    • 可在不同模块标记

    需要将 pytest.mark.skip 和 pytest.mark.skipif 赋值给一个标记变量,用变量(注解变量)进行标记,示例代码如下:

    skip = pytest.mark.skip("skip的标记变量,标记的函数或类不执行")
    skipif = pytest.mark.skipif("skipif的标记变量,标记的函数或类不执行")
    
    
    @skip
    def test_case8():
        print("测试用例8")
    
    
    class TestClass(object):
        @skipif
        def test_case9(self):
            print("测试用例9")
    

    运行结果如下:

    8、缺少某些导入跳过的测试

    语法:pytest.importorskip( modname: str, minversion: Optional[str] = None, reason: Optional[str] = None )
    参数列表

    • modname:模块名
    • minversion:版本号
    • reasone:跳过原因,默认不给也行

    示例代码如下:

    importskip = pytest.importorskip("importskip", minversion="0.3",reason="此处是导入失败,跳过的测试")
    
    
    @importskip
    def test_10():
        print('测试用例10')
    

    运行结果如下:

    系列参考文章:
    https://www.cnblogs.com/poloyy/category/1690628.html

    优秀不够,你是否无可替代

    软件测试交流QQ群:721256703,期待你的加入!!

    欢迎关注我的微信公众号:软件测试君


  • 相关阅读:
    Python 接口测试之结果集比较封装
    Python 接口测试之发送邮件封装
    Python 接口测试之接口请求方法封装
    Python 接口测试之获取接口数据封装
    Python 接口测试之接口关键字封装
    Python 接口测试之Excel表格数据操作方法封装
    [c++] 二级指针的原理
    [bug] java.text.ParseException: Unparseable date: "2020-01-01"
    [bug] IDEA编译时出现 Information:java: javacTask: 源发行版 1.8 需要目标发行版 1.8
    [bug] maven“1.5不支持diamond运算符,请使用source 7或更高版本以启用diamond运算符”
  • 原文地址:https://www.cnblogs.com/longronglang/p/13966382.html
Copyright © 2011-2022 走看看