通过pytest在python中传递命令行参数
问题内容:
我可以在运行时传递命令行参数
python <filename>.py arg1
但是,当尝试传递命令行参数以运行pytest时,它失败并给出如下错误。你能给些建议么。
pytest <filename>.py arg1
ERROR: file not found: arg1
编辑:
例如,假设我已经传递了一个参数并正在通过sys.argv进行读取,则考虑以这种方式使用它:
import sys
arg = sys.argv[3]
def f():
return 3
def test_function():
assert f() == arg
问题答案:
您的pytest <filename>.py arg1
命令尝试在<filename>.py
和两个模块上调用pytest
arg1
,但是没有模块arg1。
如果要在运行pytest之前传递一些参数,请在提取变量后从python脚本运行pytest。
正如其他人所建议的那样,尽管您可能希望以其他方式对测试进行参数化,请尝试:Parameterized
pytest
。
# 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()
用这个叫 python run.py filename.py arg1