如何在Python中使用 `pytest`?

23 投票
7 回答
31676 浏览
提问于 2025-04-16 01:53

我正在一个项目中工作,最近我们换用了pytestunittest这个框架。我之前习惯在Eclipse里运行我的测试,这样我可以使用调试工具(比如设置断点来分析测试失败的原因)。但是现在不行了,因为运行测试的唯一方式是通过命令行这个黑盒子。

有没有办法在Python内部使用pytest,这样我就不需要退出IDE了?当然,测试不应该在一个单独的进程中运行。

7 个回答

7

现在pytest已经支持这个功能,并且在文档中有详细说明。

你可以直接从Python代码中调用pytest:

import pytest
pytest.main()

这样做就像你在命令行中输入“pytest”一样。它不会引发SystemExit错误,而是返回退出代码。你还可以传入选项和参数:

pytest.main(["-x", "mytestdir"])
12

现在(py.test版本2.0及以上),似乎有人也可以这样做:

import pytest

pytest.main('-x {0}'.format(argument))

# Or
# pytest.main(['-x', 'argument'])

参考链接

40

我想我现在可以自己回答这个问题了,其实很简单:

import pytest

pytest.main(args)

这个内容在“从Python代码调用pytest”的章节中有说明。然后我可以运行这个模块,或者用集成的调试器来启动它。

args是命令行参数的列表,所以比如说如果我只想运行特定的测试,我可以使用类似下面的方式:

args_str = "-k test_myfavorite"
args = args_str.split(" ")
pytest.main(args)

撰写回答