• pytest自动化4:fixture之yield实现teardown


    出处:https://www.cnblogs.com/yoyoketang/p/9401554.html

    前言:

    上一篇介绍了fixture通过scope参数控制setup级别,我们一起来温故下fixture的特点吧:

    fixture(scope = "function", params=None, autouse=False, ids=None, name=None)

    1.  fixture使用装饰器标记功能

    2.  arg scope:scope有四个等级参数----"function" (默认), "class", "module" or "session"

     

    scope = ‘module’

    1. fixture参数scope='module',module是作用于整个.py文件的,用例调用时,参数写上函数就行

    从运行结果中可以看出,虽然test_s1、test_s2、test_s3都调用了open函数,但是它只在第一个函数前执行了一次

    2. 如果test_s1不调用,test_s2(调用open),test_s3不调用,运行顺序会是怎样的?

    从运行结果中可以看出,module级别的fixture在当前.py模块里,只会在用例test_s2前调用执行一次。

    yield 执行 teardown

    1. 前篇讲的是在用例前加前置条件,相当于setup,既然有setup,那就有teardown,fixture里面的teardown有yield来唤醒teardown的执行。

    yield遇到异常

    1. 如果其中一个用例出现异常,不影响yield后面的teardown执行,运行结果互不影响,并且全部用例执行完之后,yield呼唤teardown操作。

    2.如果在setup就异常了,那么是不会去执行yield后面的teardown内容了

    3. yield也可以配合with语句使用

    4. addfinalizer 终结函数--以后再研究

         yield和addfinalizer方法都是在测试完成后呼叫相应的代码。但是addfinalizer不同的是:

    • 他可以注册多个终结函数。

    • 这些终结方法总是会被执行,无论在之前的setup code有没有抛出错误。这个方法对于正确关闭所有的fixture创建的资源非常便利,即使其一在创建或获取时失败

  • 相关阅读:
    WSL 修改默认登录用户为root
    WSL ssh服务自启动
    odoo 获取model的所有字段
    C++类型父类与子类的转换--dynamic_cast(转)
    开源软件/镜像库
    C/C++编译器gcc的windows版本MinGW-w64安装教程(转)
    msys2 环境搭建
    Windows下利用Cygwin搭建C/C++开发环境GCC(转)
    模板类中子类访问父类中的成员需要通过this指针
    C++ 构造函数与this指针
  • 原文地址:https://www.cnblogs.com/cudy/p/10485090.html
Copyright © 2020-2023  润新知