向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));});});});

联系人

请随时与我联系:

许可条款

特此免费向任何获得 本软件和相关文档文件的副本 “软件”),无限制地处理软件,包括 但不限于使用、复制、修改、合并、发布, 分发、再授权和/或出售软件副本,以及 允许向其提供软件的人员这样做,但须遵守 以下条件:

上述版权公告及本许可公告须包括在内 在软件的所有副本或大部分中。

软件按“原样”提供,不作任何形式的保证 或默示的,包括但不限于 适销性、适合特定目的和不侵权。 在任何情况下,作者或版权持有人均不对任何 索赔、损害赔偿或其他责任,无论是在合同诉讼中, 侵权行为或其他,由 软件或软件中的使用或其他交易。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
用户界面如何在JavaGUI中为按钮创建各种颜色?   使用MSCAPI的RSA密钥包装的java使用   java Spring数据Redis JedisConnectionException:意外的流结束   java饼图未显示预期输出   java hystrixCommand注释commandKey的用途是什么   windows java可以从cmd运行jar,但不能通过双击来运行   java在单击按钮时遍历XML节点   java试图使用日期(int,int,int)构造函数   带有Buildship 2子项目的java不作为项目依赖项链接   java jsonrpc4j:如何从服务器获取列表<SomeObject>?   用于Java应用程序的内存设置MaxDirectMemory和MaxHeapMemory   java如何从以下类型格式化日期   javayoutube。搜索列表搜索不返回任何内容   java My参数在方法中不起作用,因为泛型存在问题   java如何将Map<Key1Type,Val1Type>转换为Map<Key1Type,Val2Type>   JavaJUnit测试:测试用例的改进,测试数组列表的长度?   java如何在Android中解析带有属性值的xml数据?   使用Hibernate对枚举类型进行Java8bean验证