• pytest之fixture


    前言:刚好学到fixture。做下笔记。

    #首先明确一点。unittest和nose都支持fixture的。但是fixture在pytest里使用更灵活。也算是pytest的一个闪光点吧。

    1、什么是fixture?

      你可以理解为一个跟setup和teardown这种前后置类似的东西。但是比它们要强大、灵活很多。

    2、啥时候需要用到fixture?

      我们知道前后置,要么每个用例调用一次。要么总共调用一次。比如我们有对于某测试点五个测试用例。三个用例需要

    调用登录的login方法。两个不需要调用。这个时候用前置与后置就没办法解决了。(谁说的。我特么把调用login不写在前后置里面

    不就行了。只是看起来没有那么规范而已。)

    3、fixture之conftest。

      3.1第一步。如下图:新建一个名为conftest的py文件(注意文件名是固定的,不能更改)

      

      3.2再新增一个文件。代码如下。

      

      3.3我们可以看到。test_s1和test_s3调用了login方法,test_s2没有调用,执行一下。

      

      3.4非常的简洁易懂。当然。如果内容较少的情况下写在一起也行。如下:

      

      执行结果下:效果都是一样的。

      

      注:fixture装饰器里的scope有四个级别的参数。“function(不写默认这个)”,“class”,“module”or“session”

      除scope之外。还有params、autouse、ids、name等。

    4、fixture之yield。

      4.1、如果说scope参数类似于setup。那么yield就类似于teardown。且yield最大的好处是遇到报错不会直接停止,还是会继续执行下

    一个用例。(如果前置就出错那就不会执行yield了)。例子如下:(重申一遍:fixture参数scope=“module”,整个文件生效。)

      

      如上,在test_s1里面我们模拟异常。看看运行情况。如下:

      

      我们可以看到。即使第一个用例报错了。也并不影响后面两个用例的执行以及yield的执行。

      

    5、上面我们都是通过类方法传fixture的函数参数名称来调用fixture的。

      除此之外。我们还有两种方法来调用。

      1、使用装饰器@pytest.mark.usefixtures()

      2、autouse=Ture自动使用。

      使用装饰器结构如下:

      

      使用autouse=Ture结构:其实就是这里括号

      里面增加一行autouse=Ture。默认所有用例全部调用fixture。

      

      

       

        

  • 相关阅读:
    15 手写数字识别-小数据集
    14 深度学习-卷积
    13-垃圾邮件分类2
    12.朴素贝叶斯-垃圾邮件分类
    11.分类与监督学习,朴素贝叶斯分类算法
    9、主成分分析
    7.逻辑回归实践
    8.特征选择,过滤式
    6.逻辑回归
    5.线性回归算法
  • 原文地址:https://www.cnblogs.com/cbslock/p/10160307.html
Copyright © 2020-2023  润新知