Unit testing 笔记本“ContentsManager”、测试和“Untitled.ipynb”`

Unit testing 笔记本“ContentsManager”、测试和“Untitled.ipynb”`,unit-testing,jupyter-notebook,jupyter,Unit Testing,Jupyter Notebook,Jupyter,我正在子类化ContentsManger,以创建一个包,将笔记本数据保存到OpenStack Swift商店 我的基础工作正常-就像我可以连接一样,启动笔记本电脑将在SwiftStore中创建一个根容器 我现在需要做的是让ContentsManager测试不是ERROR,而是Fail(最后,通过) 目前我得到一个没有这样的实体:[Untitled.ipynb]错误。。。。这一点我有点理解——因为在我的代码库中没有这样的文件。。。。但有一半人不明白——我可以用谷歌foo找到没有的参考资料 我的测试

我正在子类化
ContentsManger
,以创建一个包,将笔记本数据保存到OpenStack Swift商店

我的基础工作正常-就像我可以连接一样,启动笔记本电脑将在SwiftStore中创建一个根
容器

我现在需要做的是让
ContentsManager
测试不是
ERROR
,而是
Fail
(最后,
通过

目前我得到一个
没有这样的实体:[Untitled.ipynb]
错误。。。。这一点我有点理解——因为在我的代码库中没有这样的文件。。。。但有一半人不明白——我可以用谷歌foo找到没有的参考资料

我的测试环境

我正在一个独立的环境中测试我的代码

我正在构建一个Docker映像(基于
jupyter/base notebook
-so notebook 5):

来自jupyter/base笔记本的

用户根
运行apt-get-update&&apt-get-install-yq——不建议安装\
维姆\
建立必要的\
蟒蛇3开发\
少于
&&善待清洁&&\
rm-rf/var/lib/apt/lists/*
运行pip安装nose pytest pytest cov python工作服
复制快捷内容管理器/
WORKDIR SwiftContentsManager
运行pip安装-r requirements.txt
运行pip安装。

(这将创建docker映像,为我提供笔记本电脑应该拥有的所有内容,然后将我当前的代码安装到其中。)

我启动Docker:

docker run --rm -it **bunch-of-environment-variables** image-name /bin/bash
然后从容器中运行以下命令:

py.test -v --debug swiftcontents/tests/test_swiftmanager.py
我也跑了

nosetests -v --logging-level=DEBUG swiftcontents/tests/test_swiftmanager.py
在任何一种情况下,运行的第一个测试都是
test\u check\u and\u sign
,因此失败:

回溯(最近一次呼叫最后一次):
文件“/opt/conda/lib/python3.5/site packages/notebook/services/contents/tests/test\u manager.py”,第605行,测试检查和签名
注意,名称,路径=self.new_notebook()
文件“/opt/conda/lib/python3.5/site packages/notebook/services/contents/tests/test\u manager.py”,第256行,在new\u notebook中
完整模型=cm.get(路径)
文件“/home/jovyan/work/SwiftContentsManager/swiftcontents/swiftmanager.py”,get中第42行
返回函数(路径=路径,内容=内容,格式=格式)
文件“/home/jovyan/work/SwiftContentsManager/swiftcontents/swiftmanager.py”,第148行,在笔记本中
从路径(路径,内容=内容,格式=格式)返回self.\u笔记本\u模型\u
文件“/home/jovyan/work/SwiftContentsManager/swiftcontents/swiftmanager.py”,第178行,位于“笔记本”中的“模型”中
无此类实体(路径)
文件“/home/jovyan/work/SwiftContentsManager/swiftcontents/swiftmanager.py”,第136行,无此类实体
self.do_错误(“SwiftContents[swiftmanager]没有这样的实体:[{path}]”。格式(path=path),404)
文件“/home/jovyan/work/SwiftContentsManager/swiftcontents/swiftmanager.py”,第133行,在do_错误中
引发HTTPError(代码,msg)
tornado.web.HTTPError:HTTP 404:未找到(SwiftContents[swiftmanager]没有此类实体:[Untitled.ipynb])

那么
Untitled.ipynb
从何而来


(我假设我需要把它放在我的测试SwiftStore容器中——但是为什么呢?测试套件的要点当然是假设“从没有的地方开始”——为什么会假设测试文件应该预先存在——在现实世界中它不会存在)

好吧,所以大多数笔记本代码都假设,直接使用文件系统,而不是
ContentsManager
-因此永远不会飞行