我已经为一个我用以下结构编写的包写了pytest单元测试:
现在,packagedir / mypackage / test / conftest.py建立了两个必需的命令行参数,作为测试的夹具创建。当我运行类似的东西时:
pytest packagedir/mypackage/ --var1 foo --var2 bar
运行所有测试并正确读取命令行参数。但是,当我pip安装包(正确安装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命令行参数的解释,但这只是猜测。我想知道是否有一种实际的方法可以解决这个问题。
最重要的目标是允许某人点击安装mypackage然后能够轻松测试它而无需导航到安装的站点包位置。
答案 0 :(得分:4)
我在__main__.py
目录中添加了mypackage/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)
现在,我可以用
执行测试python -m mypackage.test --myoption=works
这在安装软件包时有效。
您可以使用travis构建查看此操作: