簡體   English   中英

用於導入 pytest 燈具的 IPython 快捷方式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM