除了__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
运行,它从__init__.py
运行)这会在我的整个测试/目录中打破所有测试和导入
所以也许我可以创建自己的py._path.pyimport
,这似乎并不是最安全/最正确的方式。或者是否可以拨打__init__.py
并仍在py._path.pyimport
之后运行?
答案 0 :(得分:3)
您可以使用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