从其他文件触发pytest.main()注意事项

需求:启动测试的时候,不会直接执行pytest xxx, 而是有个单独的py文件其中调用pytest.main(), 这样可以在开始的时候执行一些需要的操作,当然这些操作放在pyest 各种setup中也可以, 但是有需求是需要读取某些环境变了但是但是外部因为各种原因最后决定不通过环境变量传递而是以参数的形式传递(至于为啥不能通过环境不在本文的讨论范围内,也不是本文的关注点)。

如果启动pytest的代码如下(简单示例,不用纠结代码风格以简略等,这里只是为了说明问题)

import pytest
import sys

if __name__ == '__main__':
    print("env arg")
    print(sys.argv)
    print(sys.argv[1])

    pytest.main()

输入参数

python pytest_main.py -envType=dev
env arg
['pytest_main.py', '-envType=dev']
-envType=dev
ERROR: usage: pytest_main.py [options] [file_or_dir] [file_or_dir] [...]
pytest_main.py: error: unrecognized arguments: -envType=dev
  inifile: /Users/xxx/PycharmProjects/celldbtest/pytest.ini
  rootdir: /Users/xxx/PycharmProjects/celldbtest

可以发现这里-envType=dev被当成了pytest的参数了,而执行python pytest_main.py -c pytest.ini 是可以。

解决办法:
因为我们实际测试相关配置参数都在pytest.ini 中,因此只需要pytest.main()指定读取的文件,他就忽略其余参数

import pytest
import sys

if __name__ == '__main__':
    print("env arg")
    print(sys.argv)
    print(sys.argv[1])

    pytest.main(['-c', 'pytest.ini'])

此时启动时输出额外的参数都在pytest.main([‘-c’, ‘pytest.ini’]) 前处理, 并且这些参数也不会传递到pytest.main
python pytest_main.py -envType=dev -arg=val2
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值