向ipython中添加unittest单元魔术,以方便运行测试
ipython_unittest的Python项目详细描述
此扩展通过单元magics为ipython提供测试支持。 目前,我们有三种魔法可以转换细胞代码 执行unittest:%%unittest_main,%%unittest_testcase和 %%unittest;一个运行外部测试的魔术:%%external;一个 写入外部文件的相关魔法:%%write {mode}
请看一下 jupyter_dojo到 使用:*test status in改进此扩展的jupyter支持 toolbar*参数–previous,在 执行*计时器,成对编程日志,用于编码的函数生成 dojo sessions*语法突出显示%%write {mode}magic
如何安装
pip install ipython_unittest
要加载分机,请运行:
%load_extipython_unittest
或者,要加载扩展和编码dojo工具栏,请 运行:
%load_extipython_unittest.dojo
编码dojo工具栏可以作为一个独立的nbextension安装 嗯:
jupyter nbextension install --py ipython_unittest --user jupyter nbextension enable --py ipython_unittest --user
细胞魔法
第一个魔法是%%unittest_main。这个魔术运行测试用例 在单元格中定义
%%unittest_mainclassMyTest(unittest.TestCase):deftest_1_plus_1_equals_2(self):sum=1+1self.assertEqual(sum,2)deftest_2_plus_2_equals_4(self):self.assertEqual(2+2,4)
第二个魔法是%%unittest_testcase。这个魔法创造了 在单元中定义函数并执行它的测试用例。
%%unittest_testcasedeftest_1_plus_1_equals_2(self):sum=1+1self.assertEqual(sum,2)deftest_2_plus_2_equals_4(self):self.assertEqual(2+2,4)
第三个魔法是%%unittest。这个魔术转换了python断言 进入unittest函数。
%%unittest"1 plus 1 equals 2"sum=1+1assertsum==2"2 plus 2 equals 4"assert2+2==4
默认情况下,此魔术中的docstring将分离unittest方法。 但是,如果没有提供docStrings,魔术将创建一个方法 对于每个断言。
这些魔术支持可选参数:
-p (--previous) P: set cursor to P cells before (default: -1 = next cell) -s (--stream) S: set test output stream (default: 'sys.stdout') -t (--testcase) T: define TestCase name. Valid for '%%unittest' and '%%unittest_testcase' -u (--unparse): print cell source code after transformations.
第四个魔法是%%external。这个魔法运行于外部系统 命令并检查他们的退出代码。这样,就可以跑了 其他语言的测试:
%%external-p1mochatest.js
%externalmagic支持参数--colorand --previous之前描述过。
最后,由于可以运行外部命令,我们包括 额外的魔术,%%write来写文件和保持语法高亮。 这个魔术接收一个代码镜像模式作为第一个参数,并且 其余参数被重定向到ipython的%%writefile
请注意,它将在第一次执行后开始亮显。
%%writejavascripttest.jsvarassert=require('assert');describe('Array',function(){describe('#indexOf()',function(){it('should return -1 when the value is not present',function(){assert.equal(-1,[1,2,3].indexOf(4));});});});
许可条款
特此免费向任何获得 本软件和相关文档文件的副本 “软件”),无限制地处理软件,包括 但不限于使用、复制、修改、合并、发布, 分发、再授权和/或出售软件副本,以及 允许向其提供软件的人员这样做,但须遵守 以下条件:
上述版权公告及本许可公告须包括在内 在软件的所有副本或大部分中。
软件按“原样”提供,不作任何形式的保证 或默示的,包括但不限于 适销性、适合特定目的和不侵权。 在任何情况下,作者或版权持有人均不对任何 索赔、损害赔偿或其他责任,无论是在合同诉讼中, 侵权行为或其他,由 软件或软件中的使用或其他交易。