【发布时间】:2022-01-11 03:13:17
【问题描述】:
我想用 pytest 测试一个包含 if __name__ == '__main__': 的 python 文件
它还解析了参数。
代码是这样的:
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Execute job.')
parser.add_argument('--env', required=True, choices=['qa', 'staging', 'prod'])
args = parser.parse_args()
# some logic
这里的限制是我不能添加main() 方法并将逻辑包装在if __name__ == '__main__': 中并从那里运行它!
该代码是旧代码,无法更改!
我想用 pytest 对此进行测试,我想知道如何在我的测试中运行这个带有一些参数的 python 文件?
【问题讨论】:
-
如果您的测试发现错误怎么办?你不能解决它吗?
-
这能回答你的问题吗? stackoverflow.com/q/18668947/3141234
-
然后将缺少
main函数视为错误,并修复它。 -
你也许可以用
with open("script.py") as f: exec(f.read())做点什么,但我宁愿修复文件也不要弄乱exec。 -
这回答了你的问题——stackoverflow.com/a/51736889/13261176