小编典典

通过pytest在python中传递命令行参数

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

阅读 219

收藏
2021-01-20

共1个答案

小编典典

您的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

2021-01-20