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来对数据进行参数 ...
随机推荐
- JS实现单例模式的多种方案
JS实现单例模式的多种方案 今天在复习设计模式中的-创建型模式,发现JS实现单例模式的方案有很多种,稍加总结了一下,列出了如下的6种方式与大家分享 大体上将内容分为了ES5(Function)与ES6 ...
- Java_继承
继承的格式 继承它描述的是两个类之间的关系,如果一个子类继承父类,那么子类可以使用父类非私有的成员. 1 public class 父类{ 2 //成员变量 3 //成员方法 4 } 5 6 publ ...
- Matlab将数据存为文本文件
dlmwrite :将一个矩阵写到由分隔符分割的文件中. 在保存整数到文件时使用save存为ascii文件时,常常是文件里都是实型格式的数据(有小数点,和后面很多的0,看着很不方便).于是要保存此类数 ...
- OO随笔之和蔼的第四单元——UML系列
本单元的OO作业相比以前的,实在可以以和蔼来形容.但是和蔼并不意味着什么都不做,这单元的两次作业,特点在于每种查询难度不大,但是有很多需要商榷的细节点和查询种类比较多.由于UML图和java8之间,存 ...
- 『动善时』JMeter基础 — 19、JMeter配置元件【随机变量】
目录 1.随机变量介绍 2.随机变量界面详解 3.随机变量的使用 (1)测试计划内包含的元件 (2)线程组界面内容 (3)随机变量界面内容 (4)HTTP请求界面内容 (5)查看结果 1.随机变量介绍 ...
- [c++] 常犯错误
更改变量值时想清楚对后面程序的影响 scnaf & == 数组下标从0开始 不赋初值导致的垃圾数据 全局flag和局部flag
- centos下查看网卡,主板,CPU,显卡,硬盘型号等硬件信息
centos下查看网卡,主板,CPU,显卡,硬盘型号等硬件信息 rose_willow rose_willow 发布于 2016/06/16 11:32 字数 902 阅读 405 收藏 0 点赞 0 ...
- Sql Server 课堂笔记
创建表 --创建学生表 create table student (sno char(8) primary key, sname char(8) not null unique, ssex char( ...
- k8s总结复习
一.k8s介绍 Kubernetes(k8s)是Google开源的容器集群管理系统.在Docker技术的基础上,为容器化的应用提供部署运行.资源调度.服务发现和动态伸缩等一系列完整功能,提高了大规模 ...
- haproxy env 安装与基础配置
1. 安装 Use docker.package or source installations to install 第三方仓库 https://pkgs.org/download/haproxy ...