zoukankan      html  css  js  c++  java
  • 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创建的资源非常便利,即使其一在创建或获取时失败

  • 相关阅读:
    Invoice Helper
    Product Helper
    Order Helper
    Case Helper
    Quote Helper
    C# 工厂模式示例
    若今生长剑浣花,生死无涯
    古代美到窒息的谎言
    C#解决微信支付Exception has been thrown by the target of an invocation(调用的目标发生了异常)的问题
    文能提笔控萝莉,转载自网上
  • 原文地址:https://www.cnblogs.com/cudy/p/10485090.html
Copyright © 2011-2022 走看看