pytest--fixture基本使用(主要用来进行测试环境的初始化和清理,fixture中的params参数还可以用来进行参数化)

fixture
fixture修饰器来标记固定的工厂函数,在其他函数,模块,类或整个工程调用它时会被激活并优先执行,通常会被用于完成预置处理和重复操作。

方法:
fixture(scope="function", params=None, autouse=False, ids=None, name=None)
常用参数:
scope:被标记方法的作用域
   function(default):作用于每个测试方法,每个test都运行一次
   class:作用于整个类,每个class的所有test只运行一次
   module:作用于整个模块,每个module的所有test只运行一次
   session:作用于整个session(慎用),每个session只运行一次
params(ids一般于该参数一起使用):(list类型)提供参数数据,供调用标记方法的函数使用
autouse:是否自动运行,默认为False不运行,设置为True自动运行

代码示例:

  1. fixture不加参数,案例调用初始化和清理方法需要显示调用初始化方法名,默认初始化和清理方法的作用范围是方法,每次运行一个test方法调用一次

    2.fixture参数---scope
    2.1. scope作用范围是class,即每运行一个类调用一次初始化和清理的方法


    2.2. scope作用范围是module,即每运行一个模块(一个PY文件)调用一次初始化和清理的方法(每个模块都需要写初始化方法和清理方法,这样才会运行每个模块都会执行一遍初始化方法和清理方法)



    2.3. scope作用范围是session/package,即每运行包调用一次初始化和清理的方法,一般写conftest.py文件,放到工程根目录下,就可以全局调用了,如果放到某个package下,那么就只能在这个package下使用(后续介绍conftest.py)
    3.fixture参数---autouse(自动让范围内的测试方法执行初始化方法和清理方法)

    4.fixture参数---name参数是给fixtrue设置名称

    5.fixture参数---params参数(params参数接受列表类型的数据 实现参数化功能)
    • 相同的测试脚本使用不同的测试数据来执行,测试数据和测试行为进行了完全的分离,这样的测试脚本设计模式叫做数据驱动;
    • 参数化就是数据驱动实现的一种表现;
    • 比如登录功能模块,使用3组不同的用户名和密码进行登录来验证登录功能模块的正确性,可以把这组不同的用户名和密码理解为参数化的数据;
    • 为什么要使用不同的数据来对相同模块功能进行验证,因为这样测试会更充分一些,也可以检查程序是否处理了各种异常情况(如错误的用户名、错误的密码等)。

      扩展:params传的列表中包含字典

      6.fixture参数---ids参数(ids参数一般与params配合使用,ids主要是给每个参数化的方法中加个ids名字,效果见图)

一般会把fixtrue配置单独存放到一个文件conftest.py ,conftest.py文件使用见这篇文章 https://www.cnblogs.com/ritaliu/p/13523842.html

posted @ 2020-08-18 11:37  我是海底的咸鱼  阅读(448)  评论(0编辑  收藏  举报