我有一个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会从所有模块收集所有测试,这些模块的根来self 运行命令的路径.

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

推荐答案

根据pytest documentation,选项和参数可以传递给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__])

Python相关问答推荐

Pandas 第二小值有条件

如何在箱形图中添加绘制线的传奇?

在Polars(Python库)中将二进制转换为具有非UTF-8字符的字符串变量

切片包括面具的第一个实例在内的眼镜的最佳方法是什么?

如何在给定的条件下使numpy数组的计算速度最快?

转换为浮点,pandas字符串列,混合千和十进制分隔符

名为__main__. py的Python模块在导入时不运行'

以逻辑方式获取自己的pyproject.toml依赖项

重置PD帧中的值

Polars Group by描述扩展

Python pint将1/华氏度转换为1/摄氏度°°

如何删除重复的文字翻拍?

无法在Spyder上的Pandas中将本地CSV转换为数据帧

如何重新组织我的Pandas DataFrame,使列名成为列值?

解决Geopandas和Altair中的正图和投影问题

如何编辑此代码,使其从多个EXCEL文件的特定工作表中提取数据以显示在单独的文件中

Polars表达式无法访问中间列创建表达式

普洛特利express 发布的人口普查数据失败

Pandas:使列中的列表大小与另一列中的列表大小相同

Pandas:新列,从列表中采样,基于列值