【发布时间】:2017-05-07 08:08:08
【问题描述】:
我已经为我编写的包编写了 pytest 单元测试,其结构如下:
- 包目录
- setup.py
- 我的包裹
- __init__.py
- 功能包
- __init__.py
- functionmodule.py
- 测试
- __init__.py
- conftest.py
- unit_tests
- __init__.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 然后能够轻松地对其进行测试,而无需导航到安装的 site-packages 位置。
【问题讨论】:
-
交叉引用相关pytest问题:github.com/pytest-dev/pytest/issues/1596