gpt4 book ai didi

python - 在 py.test session 开始之前运行一个文件,没有 __init__

转载 作者:行者123 更新时间:2023-12-05 09:20:21 25 4
gpt4 key购买 nike

除了__init__.py之外,还有没有办法在一开始就运行一个.py?

我的问题是我需要在文件解析改变之前保存当前数据库状态。因为我有更改的临时测试变量,但如果我可以在解析之前存储状态,这将是固定的,因为我可以在 session 结束时恢复它。

我不仅需要在实际测试 session 开始之前运行 .py,还需要在解析其他文件之前运行。

例子:

控制台> py.test tests/test_example.py
- 需要它在这里运行
收集到 0 个项目
tests/test_example.py
====测试 session 开始====
conftest.py 在这里运行

您可以说 __init__.py 是一个解决方案,但是当测试目录中有 __init__.py 时,pytest 会将所有内容作为模块运行。 (而不是从 py._path.pyimport 运行,它从 __init__.py 运行)这打破了我所有的测试并在我的整个测试/目录中导入

也许我可以创建自己的py._path.pyimport,这似乎不是最安全/正确的方法。或者是否可以调用 __init__.py 并在之后仍然从 py._path.pyimport 运行?

最佳答案

您可以使用 pytest 的 plugin hooks使用 conftest.py 来执行此操作。

我不确定哪种 Hook 最适合您的情况。可能是 pytest_configure

例如,在 conftest.py 中:

def pytest_configure():
print("Hello World")

你得到:

$ py.test
Hello World!
=================== test session starts ====================
platform linux -- Python 3.5.1, pytest-2.9.2, py-1.4.31, pluggy-0.3.1
[..]

collecting 120 items

关于python - 在 py.test session 开始之前运行一个文件,没有 __init__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37668554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com