场景:

对于一个py文件中某些用例需要前置条件,某些用例不需要前置条件的情况,使用setup/teardown肯定是不方便的,

这时就需要自定义测试用例的前置条件。

1、fixture优点:

  • 命名不局限于setup、teardown这些,可以任意
  • conftest.py文件能够实现数据共享,不需要import导入就能自动找到一些配置
  • scope="module" 可以实现多个.py跨文件共享前置, 每一个.py文件调用一次
  • scope="session" 以实现多个.py跨文件使用一个session来完成多个用例

2、fixture参数传入(scope=‘function’)

针对函数有效,需要前置条件的传入fixture就行

scope 有四个级别参数 "function" (默认), "class", "module" or "session"

如下示例:用例1需要先登录,用例2不需要登录,用例3需要先登录

# 新建一个文件test_fixt.py
# coding:utf-8
import pytest # 不带参数时默认scope="function"
@pytest.fixture()
def login():
print("输入账号,密码先登录") def test_s1(login):
print("用例1:登录之后其它动作111") def test_s2(): # 不传login
print("用例2:不需要登录,操作222") def test_s3(login):
print("用例3:登录之后其它动作333")

3、conftest.py配置文件

上面一个案例是在同一个.py文件中,多个用例调用一个登陆功能,如果有多个.py的文件都需要调用这个登陆功能的话,那就不能把登陆写到用例里面去了。
此时应该要有一个配置文件,单独管理一些预置的操作场景,pytest里面默认读取conftest.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 test_s1(login):
print("用例1:登录之后其它动作111") def test_s2(): # 不传login
print("用例2:不需要登录,操作222") def test_s3(login):
print("用例3:登录之后其它动作333") if __name__ == "__main__":
pytest.main(["-s", "test_fix1.py"]) test_fix2.py
# coding:utf-8
import pytest def test_s4(login):
print("用例4:登录之后其它动作111") def test_s5(): # 不传login
print("用例5:不需要登录,操作222") if __name__ == "__main__":
pytest.main(["-s", "test_fix2.py"])

单独运行test_fix1.py和test_fix2.py都能调用到login()方法,这样就能实现一些公共的操作可以单独拿出来了  

(参考悠悠博客)  

pytest-fixture之conftest.py的更多相关文章

  1. 『德不孤』Pytest框架 — 14、Pytest中的conftest.py文件

    目录 1.conftest.py文件介绍 2.conftest.py的注意事项 3.conftest.py的使用 4.不同位置conftest.py文件的优先级 5.conftest.py中Fixtu ...

  2. Pytest fixture及conftest详解

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

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

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

  4. pytest框架: fixture之conftest.py

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

  5. pytest进阶之conftest.py

    前言 前面几篇随笔基本上已经了解了pytest 命令使用,收集用例,finxture使用及作用范围,今天简单介绍一下conftest.py文件的作用和实际项目中如是使用此文件! 实例场景 首先们思考这 ...

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

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

  7. pytest文档4-fixture之conftest.py

    用例1需要先登录,用例2不需要登录,用例3需要先登录.很显然这就无法用setup和teardown来实现了.fixture之conftest.py就是自定义测试用例的预置条件 1.firture相对于 ...

  8. Pytest学习笔记5-conftest.py的用法

    前言 在之前介绍fixture的文章中,我们使用到了conftest.py文件,那么conftest.py文件到底该如何使用呢,下面我们就来详细了解一下conftest.py文件的特点和使用方法吧 什 ...

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

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

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

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

随机推荐

  1. javascript中onclick(this)用法介绍

    this指触发事件的对象 代码如下: <input id="myinput" type="text" value="javascript中onc ...

  2. debian 10安装英伟达独显驱动

    我的显卡是GTX1050TI,刚安装好Debian 10的时候启动会黑屏,无法进入系统,解决办法是在grub界面,按e修改启动参数,在启动参数那一行(一般会包含quiet)后面加上 nouveau.m ...

  3. codewars--js--Pete, the baker

    问题描述: Pete likes to bake some cakes. He has some recipes and ingredients. Unfortunately he is not go ...

  4. Java Lamada

    Collection: ->stream:返回一个以 colleciotn 元素为数据源的数据流. -->map: 入参 Function 对象,将此流中的元素依次作用于传入的 Funct ...

  5. OpenLayers动态测量距离和面积,并可自定义测量的线样式

    全局操作变量 /** * @description 标注弹出框 */ HtmlPopup = null; /** * @description 临时图层类数据源 */ VectorSource = n ...

  6. python随用随学20200221-生成器中的send(),throw()和close()方法

    send()方法 文档定义 generator.send(value) Resumes the execution and "sends" a value into the gen ...

  7. 02.JS数据类型与数据类型转换

    前言:   学习一门编程语言的基本步骤 (01)了解背景知识 (02)搭建开发环境 (03)语法规范 (04)常量和变量 (05)数据类型 (06)数据类型转换5.数据类型——datatype  数据 ...

  8. Ubuntu安装软件时报 Unable to acquire the dpkg frontend lock解决方案

    解决方案如下: 对于以上内容,请等待过程完成.如果这没有发生,请在终端中运行: sudo killall apt apt-get 如果以上都不起作用,请删除锁定文件.在终端中运行: sudo rm / ...

  9. (三)LoadRunner术语认识

    场景:主要表现为controller中设计与执行测试用例中的用户场景.主要工作有,在controller中选择虚拟用户脚本.设置虚拟用户数量.配置虚拟用户运行时的行为.选择负载发生器.设置执行时间等. ...

  10. Luarocks 安装艰难过程

    https://www.cnblogs.com/fanxiaojuan/p/11551268.html