我已经为使用以下结构编写的包编写了pytest单元测试:
> packagedir
> setup.py
> mypackage
> __init__.py
>功能包
> __init__.py
> functionmodule.py
>测试
> __init__.py
> conftest.py
>单元测试
> __init__.py
> functionmodule_test.py
现在,packagedir / mypackage / test / conftest.py建立了两个必需的命令行参数,这些参数将被创建为测试的固定装置.当我运行类似:
pytest packagedir/mypackage/ --var1 foo --var2 bar
运行所有测试,并正确读取命令行参数.但是,当我点安装软件包时(正确安装了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,然后能够轻松对其进行测试,而无需导航到安装的站点软件包位置.
解决方法:
我将__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版本查看此操作:
> __main__.py
> Travis invocation
> Travis output
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。