这篇文章主要介绍了使用Jupyter笔记本学习Python的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。
有了Jupyter, PyHamcrest,用一点测试的代码把它们连在一起,你就可以教任何适用于单元测试的Python内容。
引用>
关于Ruby社区的一些事情一直让我印象深刻,其中两个例子是对测试的承诺和对易于上手的强调。这两方面最好的例子是Ruby以心传心,在这里你可以通过修复测试来学习Ruby。
要是我们能把这些神奇的工具也用于Python,我们应该可以做得更好。是的,使用Jupyter笔记本,PyHamcrest,再加上一点类似于胶带的粘合代码,我们可以做出一个包括教学,可工作的代码和需要修复的代码的教程。
首先,需要一些“胶”布。通常,你会使用一些漂亮的命令行测试器来做测试,比如pytest或美德。通常,你甚至不会直接运行它。你使用像托克斯或氮氧化物这样的工具来运行它。然而,对于Jupyter来说,你需要写一小段粘合代码,可以直接在其中运行测试。
幸运的是,这个代码又短又简单:
进口unittest def run_test (klass): 套件=unittest.TestLoader () .loadTestsFromTestCase (klass) unittest.TextTestRunner(冗长=2).run(套房) 返回klass复制代码现在,装备已经就绪,可以进行第一次练习了。
在教学中,从一个简单的练习开始,建立信心总是一个好主意。
那么,让我们来修复一个非常简单的测试:
@run_test 类TestNumbers (unittest.TestCase): def test_equality(自我): expected_value=https://www.yisu.com/zixun/3只改这一行 自我。expected_value assertEqual(1 + 1)复制代码test_equality (__main__.TestNumbers)…失败======================================================================失败:test_equality (__main__.TestNumbers) ---------------------------------------------------------------------- 回溯(最近的电话): 文件“& lt; ipython-input-7-5ebe25bc00f3>“test_equality第6行 自我。expected_value assertEqual (1 + 1) AssertionError: 2 !=3 ---------------------------------------------------------------------- 跑1测试在0.002 s 失败(失败=1)复制代码"只改这一行“对学生来说是一个有用的标记。它准确地表明了需要修改的内容。否,则学生可以通过将第一行改为<代码> 代码>返回来修复测试。
在这种情况下,修复很容易:
@run_test 类TestNumbers (unittest.TestCase): def test_equality(自我): expected_value=https://www.yisu.com/zixun/2修复后的代码行 自我。expected_value assertEqual(1 + 1)复制代码test_equality (__main__.TestNumbers)…好吧 ---------------------------------------------------------------------- 跑1测试在0.002 s 好复制代码然而,很快,<代码> unittest> 代码库的原生断言将被证明是不够的。在<代码> pytest> 代码中,通过重写<代码>断言> 代码中的字节码来解决这个问题,使其具有神奇的属性和各种启发式方法。但这在Jupyter笔记本中就不容易实现了。是时候挖出一个好的断言库了:PyHamcrest。
从hamcrest导入* @run_test 类TestList (unittest.TestCase): def test_equality(自我): 东西=[1, 5 #只改这一行 3] assert_that(东西,has_items(1、2、3)复制代码test_equality (__main__.TestList)…失败======================================================================失败:test_equality (__main__.TestList) ---------------------------------------------------------------------- 回溯(最近的电话): 文件“& lt; ipython -输入- 11 - 96 - c91225ee7d>“, 8号线,在test_equality assert_that(东西,has_items (1、2、3) AssertionError: 预期:序列包含& lt; 1比;和一个序列包含& lt; 2比;和一个序列包含& lt; 3祝辞) 但是:序列包含& lt; 2比;(1、5、3)& lt;比; ---------------------------------------------------------------------- 跑1测试在0.004 s 失败(失败=1)复制代码PyHamcrest不仅擅长灵活的断言,它还擅长清晰的错误信息。正因为如此,问题就显而易见了。
使用Jupyter笔记本学习Python的方法