对pytest pyargs使用命令行参数

2024-10-02 00:42:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我为我编写的包编写了pytest单元测试,其结构如下:

  • 包目录
    • 在设置.py在
    • 我的包
      • __初始值
      • 功能包
        • __初始值
        • 在函数模块.py在
      • 试验
        • __初始值
        • 在conftest.py在
        • 单元测试
          • __初始值
          • 功能模块_测试.py在

现在packagedir/mypackage/test/conftest.py建立两个必需的命令行参数,这些参数将被创建为测试的fixture。当我运行类似于:

pytest packagedir/mypackage/ --var1 foo --var2 bar

所有测试都会运行,命令行参数都会正确读入。但是,当我pip安装包(它正确地安装了test和unit_tests包),然后尝试如下操作:

^{pr2}$

我得到这样一个错误:

usage: pytest [options] [file_or_dir] [file_or_dir] [...]
pytest: error: unrecognized arguments: --var1 foo --var2 bar

如果我跑:

pytest --pyargs mypackage

测试运行但失败,因为命令行参数不存在。在

有人能给我解释一下这里可能出了什么问题吗?我可以猜测并说这是因为--pyargs参数改变了pytest命令行参数的解释,但这只是猜测。我想知道是否有一个真正的方法可以解决这个问题。在

总体目标是允许某人pip安装mypackage,然后能够轻松地测试它,而无需导航到安装的站点包位置。


Tags: pip命令行pytest参数foopytestbar
1条回答
网友
1楼 · 发布于 2024-10-02 00:42:21

我添加了一个__main__.pymypackage/test目录并写了

import os
import sys

HERE = os.path.dirname(__file__)

if __name__ == "__main__":
    import pytest
    errcode = pytest.main([HERE] + sys.argv[1:])
    sys.exit(errcode)

现在,我可以用

^{pr2}$

这在安装包时起作用。在

您可以使用travis内部版本查看此操作:

相关问题 更多 >

    热门问题