在代码中调用 pytest:只运行当前文件中的测试



我有一个python文件,其中包含一些代码和对该代码的简单测试。

我想从该python文件中调用pytest,让它只收集该文件中的测试,并运行它们。

例如:foo.py:

# ... various code above...
def test_foo():
foo = Foo()
assert foo()
def test_bar():
bar = Bar()
assert bar.baz
if __name__ == '__main__':
import pytest
pytest.main()

我现在想运行python foo.py并让pytest运行该文件中的两个测试,并且只运行这些测试。

但是,当我运行python foo.py时,pytest从我运行命令的路径中根的所有模块收集所有测试。

我如何运行python foo.py并在foo.py中调用pytest.main(),仅调用foo.py中的测试而不调用其他测试?

根据pytest文档,选项和参数可以传递给pytest.main。要在foo.py中运行测试,可以这样做:

# ... various code above...
def test_foo():
foo = Foo()
assert foo()
def test_bar():
bar = Bar()
assert bar.baz
if __name__ == '__main__':
import pytest
pytest.main(["foo.py"])
# consider using below
# pytest.main([__file__])

最新更新