zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    K近邻法(KNN)原理小结
    scikit-learn决策树算法类库使用小结
    朴素贝叶斯算法原理小结
    scikit-learn 支持向量机算法库使用小结
    Socket原理与编程基础
    实时获取股票信息API
    微信内部浏览器私有接口
    外汇哦,你懂的。
    股票数据源-股票代码和名称数据格式
    用Simple Html Dom Parser 获取中国银行汇率
  • 原文地址:https://www.cnblogs.com/sunzzc/p/13308374.html
Copyright © 2011-2022 走看看