gpt4 book ai didi

python - 将命令行参数与 pytest --pyargs 一起使用

转载 作者:太空宇宙 更新时间:2023-11-03 14:57:32 26 4
gpt4 key购买 nike

我已经为我用如下结构编写的包编写了 pytest 单元测试:

  • 包目录
    • setup.py
    • 我的包裹
      • __初始化__.py
      • 功能包
        • __初始化__.py
        • 函数模块.py
      • 测试
        • __初始化__.py
        • conftest.py
        • 单元测试
          • __初始化__.py
          • functionmodule_test.py

现在 packagedir/mypackage/test/conftest.py 建立了两个必需的命令行参数,这些参数将被创建为测试的固定装置。当我运行类似的东西时:

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

所有测试都运行并且命令行参数被正确读取。但是,当我 pip install 包(正确安装 test 和 unit_tests 包)然后尝试这样的事情时:

pytest --pyargs mypackage --var1 foo --var2 bar

我收到这样的错误:

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

如果我运行:

pytest --pyargs mypackage

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

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

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

最佳答案

我在mypackage/test目录下添加了一个__main__.py并写入

import os
import sys

HERE = os.path.dirname(__file__)

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

现在,我可以执行测试了

python -m mypackage.test --myoption=works

这在安装包时有效。

您可以使用 travis 构建查看此操作:

关于python - 将命令行参数与 pytest --pyargs 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41270604/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com