【问题标题】:IPython shortcut for importing pytest fixtures用于导入 pytest 固定装置的 IPython 快捷方式
【发布时间】:2020-07-31 09:18:10
【问题描述】:

假设我正在 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 魔术函数,例如:

%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 的建议是这样做)。

【问题讨论】:

    标签: ipython pytest ipython-magic


    【解决方案1】:

    我想出了一个可行的替代方案,它带来了一个优势——它也导入了我的下划线辅助函数。

    在我添加的测试文件底部:

    if __name__ == "__main__":
        fixture1 = fixture1()
        fixture2 = fixture2()
    

    然后在 IPython 中,而不是

    from test_some_tests import *
    

    我愿意

    %run test_some_tests.py
    

    优点是这也将我所有的下划线辅助函数导入到 IPython 中。

    【讨论】:

      猜你喜欢
      • 2019-10-02
      • 1970-01-01
      • 2018-02-10
      • 1970-01-01
      • 2017-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-01
      • 1970-01-01
      相关资源
      最近更新 更多