我已经为我用如下结构编写的包编写了 pytest 单元测试:
现在 packagedir/mypackage/test/conftest.py 建立了两个必需的命令行参数,以作为测试的夹具创建。当我运行类似的东西时:
pytest packagedir/mypackage/ --var1 foo --var2 bar
Run Code Online (Sandbox Code Playgroud)
所有测试都运行并且命令行参数被正确读入。但是,当我 pip install 包(它正确安装 test 和 unit_tests 包)然后尝试这样的事情时:
pytest --pyargs mypackage --var1 foo --var2 bar
Run Code Online (Sandbox Code Playgroud)
我收到这样的错误:
usage: pytest [options] [file_or_dir] [file_or_dir] [...]
pytest: error: unrecognized arguments: --var1 foo --var2 bar
Run Code Online (Sandbox Code Playgroud)
如果我运行:
pytest --pyargs mypackage
Run Code Online (Sandbox Code Playgroud)
测试运行但失败,因为命令行参数不存在。
有人可以向我解释这里可能出了什么问题吗?我可以猜测并说这是因为 --pyargs 参数改变了 pytest 的命令行参数的解释,但这只是一个猜测。我想知道是否有实际的方法可以解决这个问题。
首要目标是允许某人 pip install mypackage 然后能够轻松地测试它,而无需导航到安装的站点包位置。