• pytest 初始化清除


    初始化清除

    初始化清除对自动化测试框架来说,初始化清除功能至关重要

    如果清除功能没做好 经常会出现一部分测试用例 单独跑可能没问题 

    但是和其他测试用例一起跑 就会出现问题 或者和另外一批测试用例就会出错

    而且初始化清除做好对于简化自动化测试用例也非常重要

    如 系统中实现了两个功能的自动化 一个登录一个用户管理 添加了一个用户  

    我们要列出添加是否成功,如果初始化清除没做好 出现了两个张三 有可能是登录的时候 张三没有清除掉

    模块级别 (类级别,方法级别。目录级别)

    初始化清除它不是 pytest里的 而是继承unittest 里的

    模块级别的初始化,清除 分别 在整个模块的测试用例执行前后,并且只会执行一次

    如下定义 setup_module 和 teardown_module 全局函数

    示例(执行pytest -s):

    def setup_module(): print(' *** 初始化-模块 ***') def teardown_module(): print(' *** 清除-模块 ***') class Test_错误密码:def test_C001001(self): print(' 用例C001001') assert1 == 1def test_C001002(self): print(' 用例C001002') assert2 == 2def test_C001003(self): print(' 用例C001003') assert3 == 2class Test_错误密码2:def test_C001021(self): print(' 用例C001021') assert1 == 1def test_C001022(self): print(' 用例C001022') assert2 == 2

    类级别:

    类级别的初始化,清除 分别在整个类的测试用例执行前后执行,并且只会执行一次

    如定义下 setup_class 和 teardpwn 类方法

    实例代码 pytest -s:

    def setup_module(): print(' *** 初始化-模块 ***') def teardown_module(): print(' *** 清除-模块 ***') class Test_错误密码: @classmethoddef setup_class(cls): print(' === 初始化-类 ===') @classmethoddef teardown_class(cls): print(' === 清除 - 类 ===') def test_C001001(self): print(' 用例C001001') assert1 == 1def test_C001002(self): print(' 用例C001002') assert2 == 2def test_C001003(self): print(' 用例C001003') assert3 == 2class Test_错误密码2:def test_C001021(self): print(' 用例C001021') assert1 == 1def test_C001022(self): print(' 用例C001022') assert2 == 2

    可以发现,类级别的初始化、清除 在 整个模块所有用例 执行前后 分别 执行1次 。

    它主要是用来为该  中的所有测试用例做 公共的 初始化 和 清除

    方法级别

    方法级别的初始化,清除分别在类的每给测试方法执行前后执行,并且每个用例分别执行一次

    如下定义 setup_class 和 teardown 类方法

    也就是 对于每个测试用例的方法 每个方法初始化   每个前后执行前后都要执行一次

    实例代码:

    def setup_module(): print(' *** 初始化-模块 ***') def teardown_module(): print(' *** 清除-模块 ***') class Test_错误密码: @classmethoddef setup_class(cls): print(' === 初始化-类 ===') @classmethoddef teardown_class(cls): print(' === 清除 - 类 ===') def setup_method(self): print(' --- 初始化-方法 ---') def teardown_method(self): print(' --- 清除 -方法 ---') def test_C001001(self): print(' 用例C001001') assert1 == 1def test_C001002(self): print(' 用例C001002') assert2 == 2def test_C001003(self): print(' 用例C001003') assert3 == 2class Test_错误密码2:def test_C001021(self): print(' 用例C001021') assert1 == 1def test_C001022(self): print(' 用例C001022') assert2 == 2

    目录级别

    目录级别的初始化清除,就是针对整个目录执行的初始化,清除

    在需要初始化的目录下面创建应该名为 conftest.py 的文件,里面的内容如下

    实例 pytest -sv:

    import pytest

    # fixture: 装置初始化清除环境

    # package: 对应整个目录

    # autouse: 声明使用初始

    @pytest.fixture(scope='package',autouse=True)def st_emptyEnv(): print(f' #### 初始化-目录甲') yield print(f' #### 清除-目录甲')

    但是pytest 一个重要的bug : 清除操作并不一定在该目录最后一个测试用例执行完调用

    多个目录都有初始化清除就会出现bug 待修复 没有修复前不建议使用目录初始化清除

    d ef setup_module(): print(' *** 初始化-模块 ***') def teardown_module(): print(' *** 清除-模块 ***') class Test_错误密码: @classmethoddef setup_class(cls): print(' === 初始化-类 ===') @classmethoddef teardown_class(cls): print(' === 清除 - 类 ===') def test_C001001(self): print(' 用例C001001') assert1 == 1def test_C001002(self): print(' 用例C001002') assert2 == 2def test_C001003(self): print(' 用例C001003') assert3 == 2class Test_错误密码2:def test_C001021(self): print(' 用例C001021') assert1 == 1def test_C001022(self): print(' 用例C001022') assert2 == 2

  • 相关阅读:
    IDEA使用总结1-Github下载代码和上传代码到Git
    Mysql-安装指南
    Dubbo安装及其实战1
    分布式设计(学习内容目录--后端架构师)
    elasticsearch安装指导(new)
    浅谈TCP/IP(new 常见面试问题)
    浅谈常用的设计模式(new)
    浅谈Elasicsearch
    浅谈数据库分库分表(new)
    JAVA 电子书下载地址
  • 原文地址:https://www.cnblogs.com/sunzzc/p/13308374.html
Copyright © 2020-2023  润新知