微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我已经为使用以下结构编写的包编写了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] 举报,一经查实,本站将立刻删除。

相关推荐