测试

并行运行 notebook 的单元测试

源代码

test_nb

 test_nb (fn, skip_flags=None, force_flags=None, do_print=False,
          showerr=True, basepath=None)

fn 指定的 notebook 中执行测试,但跳过带有 skip_flags 标记的单元格

类型 默认值 详情
fn 要测试的 notebook 文件名
skip_flags NoneType None 标记要跳过单元格的标记列表
force_flags NoneType None 标记总是运行单元格的标记列表
do_print bool False 打印完成信息?
showerr bool True 将错误信息打印到 stderr?
basepath NoneType None 添加到 sys.path 的路径

test_nb 可以测试 notebook,并跳过某些标记

_nb = Path('../../tests/directives.ipynb')
success,duration = test_nb(_nb, skip_flags=['notest'])
assert success

在该 notebook 中,标记为 notest 的单元格会引发异常,这将以 bool 类型返回

_nb = Path('../../tests/directives.ipynb')
success,duration = test_nb(_nb, showerr=False)
assert not success

有时您可能希望覆盖一个或多个 skip_flags,在这种情况下,您可以使用参数 force_flags,它将从 skip_flags 中移除相应的标签。这很有用,因为 skip_flags 通常在 settings.initst_flags 字段中设置,而 force_flags 通常由用户传入。


源代码

nbdev_test

 nbdev_test (path:str=None, flags:str='', n_workers:int=None,
             timing:bool=False, do_print:bool=False, pause:float=0.01,
             ignore_fname:str='.notest', symlinks:bool=False,
             file_glob:str='*.ipynb', file_re:str=None,
             folder_re:str=None, skip_file_glob:str=None,
             skip_file_re:str='^[_.]', skip_folder_re:str='^[_.]')

并行测试与 path 匹配的 notebook,并传递 flags

类型 默认值 详情
path str None 要测试的 notebook 名称或 glob 模式
flags str 空格分隔的测试标记列表,这些标记通常被忽略但在此处运行
n_workers int None 工作进程数
timing bool False 计时每个 notebook,查看哪些速度慢
do_print bool False 打印每个 notebook 的开始和结束信息
pause float 0.01 在 notebook 之间暂停的时间(秒),以避免竞态条件
ignore_fname str .notest 会导致同级文件被忽略的文件名
symlinks bool False 跟随符号链接?
file_glob str *.ipynb 只包含与 glob 模式匹配的文件
file_re str None 只包含与正则表达式匹配的文件
folder_re str None 只进入与正则表达式匹配的文件夹
skip_file_glob str None 跳过与 glob 模式匹配的文件
skip_file_re str ^[_.] 跳过与正则表达式匹配的文件
skip_folder_re str ^[_.] 跳过与正则表达式匹配的文件夹
nbdev_test(n_workers=0)
Success.

您甚至可以在非 nbdev 项目中运行 nbdev_test,例如,您可以这样测试一个单独的 notebook

nbdev_test --path ../../tests/minimal.ipynb --do_print

或者您可以测试整个目录中的 notebook,只过滤出与正则表达式匹配的那些

nbdev_test --path ../../tests --file_re '.*test.ipynb' --do_print