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

      

      

       

        

  • 相关阅读:
    windows2008英文版设置文件夹选项
    vmware的使用技巧:将鼠标光标移回所在系统
    java最简代码规范总结
    oracle sql developer工具的使用
    java生成自定义证书图片4
    java生成自定义证书图片3
    java使用resource时,使用try-with-resources代替try-catch-finally
    java中利用BigDecimal进行精确计算
    mybatis分页插件pagehleper的基本使用
    mybatis中mapper映射文件中>=和<=等特殊符号的写法
  • 原文地址:https://www.cnblogs.com/cbslock/p/10160307.html
Copyright © 2011-2022 走看看