py.test会话启动前运行文件,没有__init__

时间:2016-06-06 23:59:20

标签: python python-3.x pytest

除了__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之后运行?

1 个答案:

答案 0 :(得分:3)

您可以使用pytest的plugin hooksconftest.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