• pytest- fixture个人理解总结


    pytest fixture超级灵活 缺乏百度文档学习,很多骚操作(继承、共享……),面试也爱问,多看多写。

    前后置条件公式:

     

    @pytest.fixture   #无参则默认为函数级别,可带参数 加上:(scope=”class”/”module”/”session”, auto=True)

    Def fun1():

             前置条件执行体

             Yield 返回值

             后置条件执行体

    #用例方法要调用前后置条件时:

    @pytest.mark.usefixtures(“fun1”)

    def test_add(self, fun1):  #要用前置条件函数中返回值时,此处用例方法才需传参,参数名一定同fixture函数名

             XXX

             XXX

    Fixture骚操作---fixture的继承

    如下图代码,init_driver  是 login_web的 一部分,两个都是函数级别的前后置条件,可以使用继承来优化Login_web。
    自己理解:此处继承其实更像调用,先执行别人的代码,再执行自己的代码,如果要用到别人的返回值,仍用别人的函数名接收返回值直接使用。
    继承了其他的前后置,其实是先执行一遍其它前后置函数中的语句。所以说省代码!

     

      

    使用继承后 login_web函数改为如下:

    # 访问网站并且登陆成功
    @pytest.fixture
    def login_web(init_driver):#login_web函数继承了init函数,或者叫调用了init函数,因为执行login_web时会先执行下init函数
        # login_web 调用了init—_web(就像用例方法调用前置条件一样来调用,直接加前置条件的函数名),并用init_driver接收了它的返回值
        LoginPage(init_driver).login(CD.user, CD.passwd)#init的返回值是driver,所以driver都换成了init
        yield  init_driver

    fixture骚操作--全局共享conftest.py

    使用pytest时,如果多处测试用例想共享一个前置、后置条件,则把fixture写在一个叫conftest.py的文件中。

    
    

    1.固定名字,因为pytest有个机制会自动去conftest.py中搜索fixture, 而在用例文件当中,也不需要去引入conftest.py

    2.作用域:当前conftest文件所在目录及N级子目录下的用例,均可直接调用此文件当中的 fixtures.

    3.如果fixture出现重名。就近原则,优先使用自己文件下的,其次找父目录下的共享文件中的即同一爸爸的,其次才会去爷爷那去找。.

     
  • 相关阅读:
    Paint类的介绍
    缓存淘汰算法之LRU
    Android SurfaceView实战 打造抽奖转盘
    android中scrollTo和scrollBy的理解
    Android View.onMeasure方法的理解
    Android Context 上下文 你必须知道的一切
    Android Animation简述
    Markdown 语法说明
    理解Java虚拟机体系结构
    Java集合框架:HashMap
  • 原文地址:https://www.cnblogs.com/shuchang1001/p/13492226.html
Copyright © 2020-2023  润新知