平台 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
我是一名优秀的程序员,十分优秀!