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来对数据进行参数 ...
随机推荐
- 脱壳入门----脱ASPack壳保护的DLL
前言 结合脱dll壳的基本思路,对看雪加密解密里的一个ASPack壳保护的dll进行脱壳分析. 脱壳详细过程 寻找程序的OEP 先将目标DLL拖入OD,来到壳的入口处. 然后利用堆栈平衡原理在push ...
- [bug] docker:write /var/lib/docker/tmp/GetImageBlob613162680: no space left on device
原因 分区空间不够,无法安装镜像 参考 https://www.cnblogs.com/elizwy/p/7722898.html https://blog.csdn.net/TinyJian/art ...
- Linux下ftp搭建
FTP服务器搭建教程: https://blog.csdn.net/plssmile/article/details/17061271 https://blog.csdn.net/guofengdid ...
- 【山外笔记-工具框架】iperf3网络性能测试工具详解教程
[山外笔记-工具框架]iperf3网络性能测试工具详解教程 本文下载链接 [学习笔记]iperf3网络性能测试工具.pdf 网络性能评估主要是监测网络带宽的使用率,将网络带宽利用最大化是保证网络性 ...
- shell脚本 在后台执行de 命令 >> 文件 2>&1 将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)
命令 >> 文件 2>&1或命令 &>> 文件 将标准输出与错误输出共同写入到文件中(追加到原有内容的后面) # ll >>aaa 2> ...
- 3.1.5 LTP(Linux Test Project)学习(五)-LTP代码学习
3.1.5 LTP(Linux Test Project)学习(五)-LTP代码学习 Hello小崔 华为技术有限公司 Linux内核开发 2 人赞同了该文章 LTP代码学习方法主要介绍两个步骤, ...
- swagger上的接口写入数据库
一.依赖 virtualenv -p python3.6 xx pip install scrapy pip install pymysql 二. 1.创建项目和spider1 scrapy star ...
- Linux_配置加密的https
一.配置https 1.安装好httpd服务后,安装mod_ssl模块 //首先查看是否安装mod_ssl [root@localhost ~]# rpm -qa | grep mod_ssl //安 ...
- 7.6 passwd:修改用户密码
7.6 passwd:修改用户密码 passwd命令可以修改用户密码及密码过期时间等内容,是工作中很常用的命令.普通用户和超级用户都可以运行passwd命令,但普通用户只能更改自身的用户密码, ...
- Oracle和MySQL差异总结
常用功能差异 锁差异: • Oracle锁加在数据块上 • InnoDB 是在索引上加锁,所以MySQL锁的粒度没有Oracle 精细. 导入导出: • Oracle采用EXP /IMP ,EXPDP ...