我可以在运行时传递命令行参数
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 <filename>.py arg1
<filename>.py
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
python run.py filename.py arg1