[英]IPython shortcut for importing pytest fixtures
假設我正在 IPython 中編寫一個名為test_this_thing
的測試,我打算將其逐步保存到測試文件test_some_tests.py
中。
在運行我的測試時,我可以從 IPython 輕松地做到這一點,並得到一位同事的這個很好的建議:
%run -m pytest -- -k test_this_thing
假設我在我的測試文件中添加了幾個夾具(用@pytest.fixture
標記)。 為了讓它們進入我的 IPython REPL,我必須導入它們並調用它們(因為它們是作為函數編寫的):
from test_some_tests import *
fixture1 = fixture1()
fixture2 = fixture2()
我想知道是否有任何方法可以利用 pytest 的夾具查找功能來編寫 IPython 魔術 function,例如:
%import_fixtures -k test_this_thing
這會將-k test_this_thing
測試所需的所有夾具導入我的 IPython 並在每個夾具上為我執行f = f()
位?
注意:當我在 IPython 中編寫測試時,我通常會從我的測試文件所在的目錄運行它(即在運行ipython
之前我cd
進入該目錄),這樣
from test_some_tests import *
作品。 有些人可能會添加各種__init__.py
以使他們的測試可導入,但我傾向於不這樣做(事實上,IIRC pytest 的建議是不要這樣做)。
我想出了一個可行的替代方案,它帶來了一個優勢——它也導入了我的下划線輔助函數。
在測試文件的底部我添加了:
if __name__ == "__main__":
fixture1 = fixture1()
fixture2 = fixture2()
然后在 IPython 中,而不是
from test_some_tests import *
我願意
%run test_some_tests.py
優點是這也將我所有的下划線輔助函數導入到 IPython 中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.