pytest学习和使用9-fixture中conftest.py如何使用?
2023-03-07 09:16:14 时间
1 引入
- 之前学习使用
fixture
前置实现用例的登陆,当时在一个脚本中实现的;那如果其他的脚本也需要用到登陆,这样调用起来可能比较麻烦; - 所以我们可以把登陆的
fixture
放到conftest.py
,让pytest
去查找。
2 conftest.py简介
conftest.py
是一个配置文件;- 可单独管理一些预置的操作场景;
- pytest里面默认读取
conftest.py
里面的配置; - 可以理解为一个专门存放fixture的配置文件。
3 conftest.py特点
conftest.py
配置脚本名称固定不可修改;conftest.py
与用例要在同一个pakage
下,并且有__init__.py
文件;- 不需要
import
导入conftest.py
,pytest
用例会自动查找。
4 实例
- 以下是两个用例都调用
conftest.py
:在这里插入图片描述
4.1 conftest.py
# -*- coding:utf-8 -*-
# 作者:NoamaNelson
# 日期:2022/11/17
# 文件名称:conftest.py
# 作用:xxx
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson
import pytest
@pytest.fixture()
def open():
print("打开浏览器")
yield
print("关闭浏览器")
4.2 test_conftest1.py
# -*- coding:utf-8 -*-
# 作者:NoamaNelson
# 日期:2022/11/17
# 文件名称:test_conftest1.py
# 作用:conftest.py的使用
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson
import pytest
def test_case1(open):
print("执行用例1......")
def test_case2(open):
print("执行用例2......")
if __name__ == "__main__":
pytest.main(["-s", "test_conftest1.py"])
test_conftest1.py::test_case1 打开浏览器
PASSED [ 50%]执行用例1......
关闭浏览器
test_conftest1.py::test_case2 打开浏览器
PASSED [100%]执行用例2......
关闭浏览器
============================== 2 passed in 0.02s ==============================
4.3 test_conftest2.py
# -*- coding:utf-8 -*-
# 作者:NoamaNelson
# 日期:2022/11/17
# 文件名称:test_conftest2.py
# 作用:conftest.py的使用
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson
import pytest
def test_case3(open):
print("执行用例3......")
def test_case4(open):
print("执行用例4......")
if __name__ == "__main__":
pytest.main(["-s", "test_conftest2.py"])
test_conftest2.py::test_case3 打开浏览器
PASSED [ 50%]执行用例3......
关闭浏览器
test_conftest2.py::test_case4 打开浏览器
PASSED [100%]执行用例4......
关闭浏览器
============================== 2 passed in 0.02s ==============================
5 conftest.py优先级
- 前边说了
conftest.py
需要和用例在同一个package
下,那如果不同的位置有多个conftest.py
,如何判断执行顺序呢? conftest.py
作用范围是当前目录包括子目录里的测试模块;
A、测试框架根目录创建conftest.py文件,文件中的Fixture的作用范围是所有测试模块;
B、某个单独的测试文件夹里创建conftest.py文件,文件中Fixture的作用范围,就仅局限于该测试文件夹里的测试模块;该测试文件夹外的测试模块,或者该测试文件夹外的测试文件夹,是无法调用到这个conftest.py文件中的Fixture。
C、测试框架根目录和子包中都有conftest.py文件,并且这两个conftest.py文件中都有一个同名的Fixture,实际生效的是测试框架中子包目录下的conftest.py文件中配置的Fixture。
D、一个用例可以添加多个conftest.py文件中定义的Fixture夹具。
相关文章
- 如何保护 EC2 上元数据以对抗 SSRF 攻击
- python logging 用法
- 使用零终端或瘦终端设备访问 Amazon WorkSpaces
- 如何在 Amazon ElastiCache for Redis 上使用集群模式
- 在 Amazon EKS 集群中使用 Envoy 无缝集成 AWS Lambda
- Amazon EKS 现在支持 EC2 Inf1 实例
- 使用 ezsmdeploy Python 程序包和几行代码将机器学习模型部署到 Amazon SageMaker
- 瞬息万变时代中的扩展挑战
- 使用 AWS CodeArtifact 的软件程序包管理
- 使用 AWS CDK 加速 EKS 集群部署
- VPC 安全的十个最佳实践
- 基于 MediaConvert 实现加载 WebVTT 字幕的 HLS 流媒体的封装
- 新增功能 – 由第二代 AMD EPYC™ 处理器提供支持的 Amazon EC2 C5a 实例
- php_python远程调试
- 机器学习为数字化转型插上翅膀
- java-synchronized原理
- 机器学习基础
- Amazon FSx for Windows File Server – 存储大小和吞吐容量扩展
- 如何优雅的删除一个 VPC
- 欢迎进入 IPv6 的云计算世界!