运行测试时,Nose 或 pytest 会进入交互式控制台

Ibr*_*mad 3 python console unit-testing

在运行鼻子测试时,我想进入交互式控制台。但是,如果我将以下内容放在代码中的任何位置:

import code
code.interact(local=locals())
Run Code Online (Sandbox Code Playgroud)

Nose 只是打印 (InteractiveConsole) 并且不提供控制台来输入命令。Pytest 将 code.interact 视为失败。有没有办法在运行测试时进入控制台,同时还可以查看文件的更改?

Emm*_*ler 5

在 pytest 下获得交互式会话的一种方法是设置断点

import pdb
pdb.set_trace()
Run Code Online (Sandbox Code Playgroud)

通常,pytest 会抑制这个交互式会话,并且会在它遇到断点时挂起。您可以通过运行带有-s标志的pytest 来解决这个问题,这会禁用命令行输出捕获。

在最新版本的 pytest 中,您可以pytest.set_trace()不使用-s标志来获得相同的行为。有关信息,请参阅文档