解决问题:用例1需要先登录,用例2不需要登录,用例3需要先登录。很显然这就无法用setup和teardown来实现了,这个时候就可以自定义测试用例的预置条件,比setup灵活很多。

1、fixture的使用,以及 scope = function 和 scope = module 的区别

#coding=utf-8
import pytest @pytest.fixture(scope="function") # 不带参数 默认scope = function 针对函数有效
def login():
print("登录成功") def test1(login):
print('操作1')
print("-----------------------------------------------") def test12():
print('操作2')
print("-----------------------------------------------") def test3(login):
print('操作3')
print("-----------------------------------------------") if __name__ == '__main__':
pytest.main()

运行结果:

# coding=utf-8
import pytest @pytest.fixture(scope="module")
def login():
print("登录成功") def test1(login):
print('操作1')
print("-----------------------------------------------") def test12():
print('操作2')
print("-----------------------------------------------") def test3(login):
print('操作3') print("-----------------------------------------------") if __name__ == '__main__':
pytest.main(['-s', "text.fix2.py"])

运行的结果:

区别:scope= module 它只会在第一个用例前执行一次,后面再调用不执行了。

2、conftest.py的配置

解决问题:上面一个案例是在同一个.py文件中,多个用例调用一个登陆功能,如果有多个.py的文件都需要调用这个登陆功能的话,那就不能把登陆写到用例里面去了,需要单独写在配置文件里面

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

  • conftest.py配置脚本名称是固定的,不能改名称
  • conftest.py与运行的用例要在同一个pakage下,并且有__init__.py文件
  • 不需要import导入 conftest.py,pytest用例会自动查找
    __init__.py
    
    conftest.py
    # coding:utf-8
    import pytest @pytest.fixture()
    def login():
    print("登录成功") test_fix1.py # coding=utf-8
    import pytest def test4(login):
    print('操作1')
    print("-----------------------------------------------") def test5():
    print('操作2')
    print("-----------------------------------------------") if __name__ == '__main__':
    pytest.main(['-s',"text.fix1.py"]) #-s参数是为了显示用例的打印信息。 -q参数只显示结果,不显示过程 text_fix2.py # coding=utf-8
    import pytest def test1(login):
    print('操作1')
    print("-----------------------------------------------") def test12():
    print('操作2')
    print("-----------------------------------------------") def test3(login):
    print('操作3') print("-----------------------------------------------") if __name__ == '__main__':
    pytest.main(['-s', "text.fix2.py"])

    运行结果:

pytest的fixture和conftest的更多相关文章

  1. pytest框架: fixture之conftest.py

    原文地址:https://blog.csdn.net/BearStarX/article/details/101000516 一.fixture优势1.fixture相对于setup和teardown ...

  2. pytest自动化3:fixture之conftest.py实现setup

    出处:https://www.cnblogs.com/yoyoketang/p/9390073.html 前言: 前面一篇讲到用例加setup和teardown可以实现在测试用例之前或之后加入一些操作 ...

  3. pytest 3.fixture介绍一 conftest.py

    前言: 前面一篇pytest2 讲到用例加setup和teardown可以实现在测试用例之前或之后加入一些操作,但这种是整个脚本全局生效的,如果我想实现以下场景: 用例1需要先登录,用例2不需要登录, ...

  4. Pytest fixture及conftest详解

    前言 fixture是在测试函数运行前后,由pytest执行的外壳函数.fixture中的代码可以定制,满足多变的测试需求,包括定义传入测试中的数据集.配置测试前系统的初始状态.为批量测试提供数据源等 ...

  5. pytest(6)-Fixture(固件)

    什么是固件 Fixture 翻译成中文即是固件的意思.它其实就是一些函数,会在执行测试方法/测试函数之前(或之后)加载运行它们,常见的如接口用例在请求接口前数据库的初始连接,和请求之后关闭数据库的操作 ...

  6. pytest.4.Fixture

    From: http://www.testclass.net/pytest/fixture/ 我们可以简单的把Fixture理解为准备测试数据和初始化测试对象的阶段. 一般我们对测试数据和测试对象的管 ...

  7. 『德不孤』Pytest框架 — 12、Pytest中Fixture装饰器(二)

    目录 5.addfinalizer关键字 6.带返回值的Fixture 7.Fixture实现参数化 (1)params参数的使用 (2)进阶使用 8.@pytest.mark.usefixtures ...

  8. pytest 多个PY文件执行共享变量及用fixture和conftest

    ------------恢复内容开始------------ 1.pytest需要测试多个py文件,这些文件有一定的依赖关系,同时执行的时候,需要只执行一次初始化setup,结束再执行一次teardo ...

  9. unittest的前置后置,pytest的fixture和共享机制conftest.py

    Unittest setUp/tearDown setUp当中得到的变量,用self.xxx = value传递给测试用例 setUpClass/tearDownClass setupClass当中得 ...

随机推荐

  1. mysql半同步开启

    开启半同步复制 #在有的高可用架构下,master和slave需同时启动,以便在切换后能继续使用半同步复制 /etc/my.cnf plugin-load = "rpl_semi_sync_ ...

  2. Leetcode 1005. K 次取反后最大化的数组和

    1005. K 次取反后最大化的数组和  显示英文描述 我的提交返回竞赛   用户通过次数377 用户尝试次数413 通过次数385 提交次数986 题目难度Easy 给定一个整数数组 A,我们只能用 ...

  3. SpringBoot系列之Hikari连接池

    1.springboot 2.0 中默认连接池是Hikari,在引用parents后不用专门再添加依赖 2.application.yml中的配置 # jdbc_config datasource s ...

  4. Hibernate 加载策略得总结

    Hibernate 加载策略得总结 加载策略(优化查询): 策略种类: 延迟加载: 等到使用的时候才会加载数据. 立即加载: 不管使用不使用,都会立刻将数据加载. 策略的应用: 类级别的加载策略. 关 ...

  5. [LeetCode] 43. Multiply Strings ☆☆☆(字符串相乘)

    转载:43. Multiply Strings 题目描述 就是两个数相乘,输出结果,只不过数字很大很大,都是用 String 存储的.也就是传说中的大数相乘. 解法一 我们就模仿我们在纸上做乘法的过程 ...

  6. ActiveMQ broker 集群, 静态发现和动态发现

    下载 activemq 压缩包解压后,conf 目录下有各种示例配置文件,红线标出的是静态发现和动态发现的配置. 1. 静态配置 启动3个 broker,端口分别为61616,61618,61620, ...

  7. ActiveMQ Message Groups

    http://activemq.apache.org/message-groups.html 与Exclusive Consumer相比,Message Groups的对消息分组的粒度更细.具有相同g ...

  8. linux 添加php gd扩展 (linux添加PHP扩展)

    首先最基本的 第一:先安装库 yum -y install libjpeglibjpeg-devel libpng libpng-devel freetype freetype-devel 第二:进入 ...

  9. 关于Object.prototype.toString.call

    slice(8,-1)意思是从第8位开始(包含第8位)到最后一位之前(-1的意思就是最后一位,不包含最后一位): Object.prototype.toString.call(boj)这个是用来判断数 ...

  10. Win10系列:UWP界面布局进阶4

    在开发Windows应用商店应用程序时,可以为页面中的界面元素添加快捷菜单,并设置与其相关的菜单项,用户通过选择快捷菜单中的菜单项来执行与被选择对象相关的操作.下面通过一个示例来介绍如何为页面中的一张 ...