• pytest fixture 用于setup工作


    什么是fixture

    fixture是在测试函数运行前后,由pytest执行的外壳函数;代码可以定制,满足多变的测试需求;包括定义传入测试中的数据集,配置测试前系统的初始状态,为批量测试提供数据源等。fixture是pytest用于将测试前后进行预备,清理工作的代码分离出核心测试逻辑的一种机制!

    举个例子

    输出:

     #@pytest.fixture() 装饰器用于声明函数是一个fixture

    如果测试函数的参数列表中包含fixture名字,那么pytest会检测到,

    检测顺序是:优先搜索该测试所在的模块,然后搜索conftest.py

    并在测试函数运行之前执行该fixture,

    fixture可以完成测试任务,也可以返回数据给测试函数

    fixture函数放在哪里合适

    1.可以放在单独的测试文件里

    2.如果希望多个测试文件共享fixture,可以放在某个公共目录下新建一个conftest文件,将fixture放在里面

    fixture作用范围

    fixture里面有个scope参数可以控制fixture的作用范围:session > module > class > function

    1、scope="function"

    @pytest.fixture()如果不写参数,参数就是scope="function",它的作用范围是每个测试用例来之前运行一次,销毁代码在测试用例之后运行。可以用在函数和方法中。

    a、放函数中使用

     输出:

     b、放类的方法中使用

     输出:

    2scope="class"

    fixture为class级别的时候,如果一个class里面有多个用例,都调用了次fixture,那么此fixture只在此class里所有用例开始前执行一次。

     输出:

    3scope="session"

    fixture为session级别的时候,可以被多个文件调用,可以跨.py文件调用。

    比如我们的登陆功能,一般只需要登陆一次,那么我们在每个测试类中其实只需要调用一次即可。

    使用步骤:

    1、定义conftest 文件

    2、定义fixture 函数

    3、标识被使用的范围(function、class、session)

    conftest.py配置需要注意以下点:

    • conftest.py配置脚本名称是固定的,不能改名称
    • conftest.py与运行的用例要在同一个pakage下,并且有__init__.py文件
    • 不需要import导入 conftest.py,pytest用例会自动查找

    举个例子

     模块一文件中使用:

     模块二文件中使用:

       查看输出:

     使用装饰器@pytest.mark.usefixtures()修饰需要运行的用例

    举个例子

     输出:

     说明:

    class 级别如果在class中使用,只在第一个用例执行之前执行一次;其他用例执行之前不会执行.

    function 级别如果在class 中使用,每个用例执行前都执行一次

  • 相关阅读:
    从量子加密到机器学习,盘点2015阿里云开放的黑科技
    架构设计:系统存储(24)——数据一致性与Paxos算法(中)
    深入理解Git (一) - 元数据
    IOS Using UIAlertView to show alerts
    gdal hdfs接口数据读取
    /usr/lib64/python2.6/site-packages/pycurl.so: undefined symbol: CRYPTO_set_locking_callback
    linux jexus mono 发布.net webservices web页面
    docker中使用systemd
    基于Open vSwitch搭建虚拟路由器
    Openstack Neutron DVR workflow
  • 原文地址:https://www.cnblogs.com/keenajiao/p/15825964.html
Copyright © 2020-2023  润新知