我的任务是在.py文件中编写一个python代码(pytest测试),它运行jupyter notebook并声明输出为1.
我有运行笔记本的方法:
def _notebook_run(path):
args = ["jupyter", "nbconvert", "--execute", path]
a = subprocess.check_call(args)
return a
测试:
def test_test():
a = _notebook_run('./file.ipynb')
assert a == 1
当我使用此测试运行它时,它返回0,但是,当我单独运行jupyter notebook时,它会按预期返回1.
为什么输出不同?
我在运行笔记本的方法中犯了一些错误吗?
有人可以帮忙吗?
更新 正如我已经想到的那样,无论在笔记本中执行什么代码,它总是返回0。 有人知道如何让它发挥作用吗?
答案 0 :(得分:0)
我改变了方法并获得了所需的结果:
def test_file(self):
result = os.popen("jupyter nbconvert --to script --execute --stdout file.ipynb | python3").read()
assert result == '1\n'
我的错误原因是使用的方法总是返回0,而不是命令的输出。