运行 py.test 会话开始之前的文件,没有 __init__
Run a file before py.test session starts, without __init__
除了__init__.py
之外,有没有办法在开头运行一个.py?
我的问题是我需要在文件解析改变之前保存当前数据库状态。因为我有更改的临时测试变量,但如果我可以在解析之前存储状态,这将是固定的,因为我可以在会话结束时恢复它。
我需要 运行 .py 不仅在实际测试会话开始之前而且在其他文件被解析之前。
示例:
console> py.test tests/test_example.py
- 需要它 运行 这里
collecting 0 items
tests/test_example.py
==== test session starts ====
conftest.py
运行在这里
你可以说 __init__.py
是一个解决方案,但是当测试目录中有 __init__.py
时,pytest 运行 将所有内容作为一个模块。 (而不是来自 py._path.pyimport
的 运行ning,而是来自 __init__.py
的 运行s)这打破了我所有的测试和导入整个测试/目录
也许我可以创建自己的 py._path.pyimport
,这似乎不是 safest/correct 的方式。或者是否可以在 py._path.pyimport
之后调用 __init__.py
并仍然调用 运行?
你可以使用 pytest 的 plugin hooks 和 conftest.py
来做到这一点。
我不确定哪个挂钩最适合您的情况。大概 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
除了__init__.py
之外,有没有办法在开头运行一个.py?
我的问题是我需要在文件解析改变之前保存当前数据库状态。因为我有更改的临时测试变量,但如果我可以在解析之前存储状态,这将是固定的,因为我可以在会话结束时恢复它。
我需要 运行 .py 不仅在实际测试会话开始之前而且在其他文件被解析之前。
示例:
console> py.test tests/test_example.py
- 需要它 运行 这里
collecting 0 items
tests/test_example.py
==== test session starts ====
conftest.py
运行在这里
你可以说 __init__.py
是一个解决方案,但是当测试目录中有 __init__.py
时,pytest 运行 将所有内容作为一个模块。 (而不是来自 py._path.pyimport
的 运行ning,而是来自 __init__.py
的 运行s)这打破了我所有的测试和导入整个测试/目录
也许我可以创建自己的 py._path.pyimport
,这似乎不是 safest/correct 的方式。或者是否可以在 py._path.pyimport
之后调用 __init__.py
并仍然调用 运行?
你可以使用 pytest 的 plugin hooks 和 conftest.py
来做到这一点。
我不确定哪个挂钩最适合您的情况。大概 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