在 Jupyter Notebook 中运行 unittest 测试时,可能会出现 `'tuple' object has no attribute 'tb_frame'` 的错误。这是因为 Jupyter Notebook 的参数处理方式与直接从命令行运行 Python 脚本不同。
具体来说,unittest.main() 函数会尝试读取命令行参数,而在 Jupyter Notebook 中,它可能会误读取到 Jupyter 系统的参数,导致出现错误。一个常见的解决方案是在调用 unittest.main() 时提供一个参数列表,如下所示:
```python
if __name__ == '__main__':
unittest.main(argv=['first-arg-is-ignored'], exit=False)
```
在这里,`argv=['first-arg-is-ignored']` 会覆盖 Jupyter 传入的命令行参数,`exit=False` 会防止测试运行结束后 Jupyter 内核关闭。
尝试修改你的代码,应该就可以解决这个问题了。