python - 可以在 conftest 中进行会话设置而无需在第一次测试中完成设置吗?
问题描述
在我的conftest.py
文件中,我有一些看起来像这样的东西:
@pytest.fixture(scope="session", autouse=True)
def do_some_setup():
val = thing_that_takes_a_few_mins()
yield val
other_thing_that_takes_a_few_mins()
虽然这可行,但设置的所有输出都会作为第一个运行测试的一部分被捕获。这对于功能范围的设置来说很好,但对于基于会话的设置没有意义。
我做错了什么/有没有办法解决这个问题?
解决方案
您始终可以将代码从会话范围的固定装置移动到预运行挂钩,例如到pytest_sessionstart
/ pytest_sessionfinish
:
# conftest.py
def pytest_sessionstart(session):
thing_that_takes_a_few_mins()
def pytest_sessionfinish(session, exitstatus):
other_thing_that_takes_a_few_mins()
请注意,尽管pytest_sessionstart
在收集测试之前调用了该钩子,因此如果您需要有关计划在哪些测试中运行的信息thing_that_takes_a_few_mins
,该钩子pytest_runtestloop
将更适合您。
推荐阅读
- bar-chart - Recharts 条形图显示带有“自动”标签的空条
- c# - 为什么带有 ADFS 的 OpenId 突然停止工作?
- python - 将本地 html 网页转换为 mhtml
- python-3.x - 使用标识符按列绘制时间序列
- firebase - 是否有可能对 Firestore 执行不区分大小写的“where”请求
- database - MongoDb对对象列表进行排序
- windows - android上的Apollo:无法下载模式或生成类
- python - 绘制一年中一年和一周的熊猫多索引时间序列
- r - 如何在R中将播放时间转换为秒
- java - Java 文档说如果当前目录不可写,hs_err_pid 将被写入 /tmp,但它不是