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。

      

      

       

        

  • 相关阅读:
    winfrom 正则验证
    winfrom api发送消息,实现滚动效果(重绘滚动条用)
    C#程序员开发WinForm必须知道的 Window 消息大全
    C# VS EditorBrowsable特性 控制智能提示
    C# Attribute简介
    Win32窗口鼠标消息
    C# 自定义控件容器,设计时可添加控件
    Linux管线命令
    Linux数据流重定向
    Shell中的变量
  • 原文地址:https://www.cnblogs.com/cbslock/p/10160307.html
Copyright © 2011-2022 走看看