Pytest学习笔记5-conftest.py的用法
前言
在之前介绍fixture的文章中,我们使用到了conftest.py文件,那么conftest.py文件到底该如何使用呢,下面我们就来详细了解一下conftest.py文件的特点和使用方法吧
什么是conftest.py
我们之前了解了fixture,fixture可以直接定义在测试脚本中,但是有些时候,我们希望一个fixture可以被复用,这就需要对fixture进行集中管理,Pytest使用文件conftest.py
集中管理固件.在复杂的项目中,可以在不同的目录层级定义conftest.py,其作用域为其所在的目录和子目录,通常情况下,conftest.py
和@pytest.fixture()
会结合使用,来实现全局的前后置处理。
conftest.py特点
conftest.py
文件的名称是固定的,不能修改conftest.py
与运行的用例要在同一个pakage下,并且有__init__.py
文件- 不需要
import
导入conftest.py
文件,pytest用例会自动识别该文件,放到根目录下可以全局目录调用,放在某个package下,那就在该package内有效 - 不同目录可以有自己的conftest.py,一个项目中可以有多个
conftest.py
- pytest会默认读取
conftest.py
里面的所有fixture,所有同目录测试文件运行前都会执行conftest.py
文件
conftest.py用法
在我们实际的测试中,conftest.py文件需要结合fixture来使用,所以fixture中参数scope也适用conftest.py中fixture的特性,这里再说明一下
- conftest中fixture的scope参数为session,所有的测试文件执行前(后)执行一次
conftest.py
文件中的fixture。- conftest中fixture的scope参数为module,每一个测试.py文件执行前(后)都会执行一次
conftest.py
文件中的fixture- conftest中fixture的scope参数为class,每一个测试文件中的测试类执行前(后)都会执行一次
conftest.py
文件中的fixture- conftest中fixture的scope参数为function,所有文件的测试用例执行前(后)都会执行一次
conftest.py
文件中的fixture
conftest.py实际案例
我们按照这样的目录新建一个项目
在根目录conftestdemo下
根目录中的conftest.py文件中,一般写全局的fixture,比如登录
conftest.py
import pytest
@pytest.fixture(scope="session")
def login():
print("***登录成功,返回用户名***")
name = "rockche"
yield name
print("***退出登录***")
@pytest.fixture(autouse=True)
def get_name(login):
name = login
print(f"--每个用例都调用外层fixiture:打印用户name:{name}--")
根目录下的测试用例
test_1.py
def test_get_name(login):
name = login
print("***基础用例:获取用户name***")
print(f"用户名:{name}")
运行conftestdemo下的所有用例
run.py
import pytest
if __name__ == '__main__':
pytest.main(["-s", "../conftestdemo/"])
test_baidu目录下
配置针对baidu网站的测试用例独有的fixture
conftest.py
import pytest
@pytest.fixture(scope="module")
def open_baidu(login):
name = login
print(f"用户 {name} 打开baidu")
test_case1.py
def test_case2_01(open_baidu):
print("搜索pytest")
def test_case2_02(open_baidu):
print("搜索博客园")
test_cnblogs目录下
没有__init__.py
文件也没有conftest.py文件
test_case1.py
def test_no_fixture(login):
print("没有__init__文件,直接进入cnblogs", login)
test_taobao目录下
配置针对taobao网站的测试用例独有的fixture
conftest.py
import pytest
@pytest.fixture(scope="function")
def open_taobao(login):
name = login
print(f"用户 {name} 进入淘宝")
test_case1.py
class TestTaobao:
def test_case1_01(self, open_taobao):
print("选购商品")
def test_case1_02(self, open_taobao):
print("进入结算界面")
运行run.py
整理参考
Pytest学习笔记5-conftest.py的用法的更多相关文章
- [转载]pytest学习笔记
pytest学习笔记(三) 接着上一篇的内容,这里主要讲下参数化,pytest很好的支持了测试函数中变量的参数化 一.pytest的参数化 1.通过命令行来实现参数化 文档中给了一个简单的例子, ...
- Pytest学习笔记3-fixture
前言 个人认为,fixture是pytest最精髓的地方,也是学习pytest必会的知识点. fixture用途 用于执行测试前后的初始化操作,比如打开浏览器.准备测试数据.清除之前的测试数据等等 用 ...
- pytest学习笔记(三)
接着上一篇的内容,这里主要讲下参数化,pytest很好的支持了测试函数中变量的参数化 一.pytest的参数化 1.通过命令行来实现参数化 文档中给了一个简单的例子, test_compute.py ...
- pytest学习笔记(二)
继续文档的第二章 (一)pytest中可以在命令行中静态/动态添加option,这里没什么好讲的,略过... 这里面主要讲下如何试用skip/xfail,还有incremental(包含一些列的测试步 ...
- pytest 学习笔记一:参数化与组织分层
组织分层: 1.普通方式,和unittest分层类似: setup_module() # 通常放在类外 setup_class(cls) setup(self) teardown(self) tea ...
- pytest学习笔记二 fixtrue
前言 官方文档关于fixture功能的解释如下: The purpose of test fixtures is to provide a fixed baseline upon which test ...
- pytest框架: fixture之conftest.py
原文地址:https://blog.csdn.net/BearStarX/article/details/101000516 一.fixture优势1.fixture相对于setup和teardown ...
- Pytest学习笔记6-自定义标记mark
前言 在pytest中,我们可以使用mark进行用例的自定义标记,通过不同的标记实现不同的运行策略 比如我们可以标记哪些用例是生产环境执行的,哪些用例是测试环境执行的,在运行代码的时候指定对应的mar ...
- Pytest学习笔记8-参数化
前言 我们在实际自动化测试中,某些测试用例是无法通过一组测试数据来达到验证效果的,所以需要通过参数化来传递多组数据 在unittest中,我们可以使用第三方库parameterized来对数据进行参数 ...
随机推荐
- 【Docker】7. 镜像-加载原理、分层原理、commit镜像
一.什么是镜像 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件. 它包含运行某个软件所需的所有内容,包括代码.运行时环境.库.环境变量和配置文件. 所有的应用,直接 ...
- 新代(Syntec)机床的IP设置
一.前言 通过以太网来做机床联网数据采集时,第一步通常是设置机床的IP和找网口 二.机床IP如何设置? 步骤一.找到设置IP的界面 [维护]>[网络设定] 步骤二.设置IP 设定[IP地址取得方 ...
- ES6中的Set和Map对象数据结构
set对象数据结构 构建某一类型的对象 -对象的实例化 let arr = [1, 2, 3, 3, 4, 5] let rec = new Set(arr)//可以传参数,数组或者对象 consol ...
- [Qt] 打包
步骤: 1.release项目,生成exe文件 2.在命令行中使用windeployqt,将相关文件复制到exe文件所在文件夹 3.用Enigma Virtual Box打包所有文件 参考 https ...
- [Python] 爬虫系统与数据处理实战 Part.1 静态网页
爬虫技术基础 HTTP/HTTPS(7层):应用层,浏览器 SSL:加密层,传输层.应用层之间 TCP/IP(4层):传输层 数据在传输过程中是加密的,浏览器显示的是解密后的数据,对爬虫没有影响 中间 ...
- CENTOS7network config文件不能直接bak 必须建立bak目录再bak
CENTOS7network config文件不能直接bak 必须建立bak目录再bak
- 【转载】Windows 10系统默认将画面显示比例调整至125%或150%,最高分辨率已经达到3840×2160(4K)这一级别。
高分屏打开软件界面模糊?不会设置太浪费 2017-08-31 19:37 抹又重彩 现在有好多朋友都喜欢并买了高分屏笔记本电脑.高分屏笔记本就是配有高分辨率屏幕的笔记本.为了给用户带来更好的视觉体验, ...
- 什么是环境变量,Linux环境变量及作用 echo
什么是环境变量,Linux环境变量及作用 < Linux命令的执行过程是怎样的?(新手必读)Linux PATH环境变量是什么,有什么用?(入门必读) > <Linux就该这么学&g ...
- K8S的资源管理
K8S的资源管理 管理K8S资源的三种基本方法: 陈述式资源管理方法-使用cli工具进行管理. 声明式资源管理方式-主要依耐资源配置清单. GUI式资源管理方法-主要依耐图形界面. 陈述式资源管理方法 ...
- Linux 文件隐藏属性-创建文件默认权限
Linux特殊权限介绍 # password原本只有root可以访问但是为什么普通用户在修改密码的时候也可以改里面的内容. [root@gong ~]# ll /usr/bin/passwd -rws ...