2016-06-06 52 views
0

除了__init__.py之外,有沒有辦法在最開始運行.py?在py.test會話啓動前運行一個文件,沒有__init__

我的問題是我需要在解析文件之前保存當前的數據庫狀態。因爲我有臨時測試變量的變化,但如果我可以存儲狀態之前解析這將是固定的,因爲我可以在會話結束時恢復它。

我需要在實際測試會話開始之前但在解析其他文件之前運行.py。

例如:

console> py.test tests/test_example.py
- 需要跑這裏來這裏
collecting 0 items
tests/test_example.py
==== test session starts ====
conftest.py運行

可以說,一個__init__.py將是一個解決方案,但在有一個測試目錄中的,pytest將所有內容作爲模塊運行。 (而不是從py._path.pyimport運行,從運行__init__.py)這打破了我所有的測試和進口貫穿了我的整個測試/目錄

所以也許我可以箱子我自己py._path.pyimport,這似乎沒有是最安全/正確辦法。或者是否可以撥打__init__.py,然後從py._path.pyimport繼續運行?

+0

爲什麼不寫一個腳本,保存狀態,運行測試,然後恢復狀態? –

+0

那麼其他人需要運行這些測試,我想我可以把腳本文件放在同一個文件空間中,只需從控制檯運行一些輸入來定製我想要如何運行測試。如果我可以混合使用'__init__'和'py._path.pyimport'函數 – Comradsky

+0

仍然在python中仍然很好 – Comradsky

回答

2

您可以使用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 
+0

在測試會話開始後不會掛鉤嗎?我需要它在初始化期間或之前運行 – Comradsky

+0

取決於你的初始化,但pytest主要基於鉤子,例如,即使測試會話本身只是一組(內部)鉤子。 –

+0

正如問題所述?在解析開始時在__init__.py處初始化含義。測試會議開始之前的方式。掛鉤可以配置測試,但只能在測試會話啓動後運行,正確嗎? – Comradsky

相關問題