gpt4 book ai didi

python - 如何在 pytest 中处理 sys.argv?

转载 作者:太空宇宙 更新时间:2023-11-04 04:12:19 24 4
gpt4 key购买 nike

平台 linux -- Python 3.6.7、pytest-4.4.0、py-1.8.0、pluggy-0.9.0

#example.py
try:
import configparser
except ImportError:
import ConfigParser as configparser

CONFIG = configparser.ConfigParser()
CONFIG.read(sys.argv[1])
ININFO = {i:dict(CONFIG.items(i)) for i in CONFIG.sections()}
DATANAME = ININFO['data']['name']

def somefunction(DATANAME):
"""
This function will take lot of variables from ini file
"""
print(DATANAME)
s1 = "Pass"
s2 = "Fail"
s3 = "Pass"
print(s1, s2, s3)
return [s1, s2, s3]

def test_somefunction():
"""
Test function
- Will check whether all steps are passed or not.
"""
status = somefunction()
for sts in status:
assert sts == 'Pass', "Test has Failed!"

if __name__ == "__main__":

somefunction()

和上面的代码一样,我有很多文件,而且都有内置测试

我的执行方式是

#sudo python3 example.py inifile.ini

请告诉我如何在不更改代码的情况下使用 pytest 执行此操作。

如果我将 sys.argv[1] 替换为文件名,则工作正常,如下所示

sudo python3 -m pytest -s 

指导我如何处理这个问题。

我添加并检查了下面的截图 error image

示例 ini 文件测试.ini

[data]
name = some.name
age = 22

[data1]
name = someother.name
age = 32

最佳答案

正如我之前评论过的,您只需创建一个 python 文件来调用 pytest 和参数,pytest 就会从那里被触发。

$ python run.py example.py test.ini

这里,run.py如下

$ cat run.py
# run.py
import pytest
import sys

def main():
# extract your arg here
print('Extracted arg is ==> %s' % sys.argv[2])
pytest.main([sys.argv[1]])

if __name__ == '__main__':
main()

example.py 是您的 python 脚本。

test.ini 是您的 ini 文件。

希望这能澄清您的疑问。

所有学分转到this answer

关于python - 如何在 pytest 中处理 sys.argv?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56110064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com