我正在编写关于python测试选项的演示文稿,我想要演示的技术之一是pytest.我打算用jupyter/ipython笔记本做演示.理想情况下,我希望能够在单元格中定义测试函数,然后使用pytest运行该函数; 这样我就可以展示pytest等的个性化特征.
有现成的方法吗?我在pytest api中看到的所有交互功能似乎都不符合要求,但我当然不是pytest专家.我很乐意写一个插件来做这个,所以关于这个方向的最佳方法的任何建议都会很棒.
我确实看到了pytest-ipynb,但它似乎没有做我需要的.如果评估错误,关于如何使用它的建议也会很好.
假设我有一个带有抽象基类的异常类,如下所示:
class MyExceptions(BaseExeption, metaclass=abc.ABCMeta):
pass
class ProperSubclass(MyExceptions):
pass
MyExceptions.register(ValueError)
Run Code Online (Sandbox Code Playgroud)
看来,我能赶上ProperSubclass的MyExceptions,但不是ValueError:
try:
raise ProperSubclass()
except MyExceptions:
print('As expected, control comes here...')
except:
print('...and not here.')
try:
raise ValueError()
except MyExceptions:
print('Control does not come here...')
except ValueError:
print('...but unexpectedly comes here.')
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,我是否应该能够通过抽象基类捕获内置异常?如果是这样,怎么样?如果没有,那么规则是什么?
我想提出这个的另一种方式是:为匹配做,除非条款正确使用isinstance()/ issubclass(),如果没有(如出现这种情况)什么做他们使用?也许在C实现中有一些阴暗的快捷方式.
当我使用 时aiohttp.web.run_app(. . ., port=0),我假设它选择了一个任意可用的端口来提供服务。这样对吗?如果是这样,有没有办法弄清楚它选择了哪个端口?
我有一个程序,我想通过emacs使用gdb进行调试.为了运行这个程序的开发版本,我有一个shell脚本,我可以使用它设置调用环境以查看正确的库等.我不能理清的是如何请求emacs/gud来源这个执行gdb之前的文件.
我尝试过使用像"source env.sourceme && gdb my_program"这样的命令,但是emacs抱怨它不知道"源"是什么意思.我想它并不是真的在shell中运行gdb,所以这些技巧都行不通.
那么,我怎样才能说服gud/emacs /在我的自定义环境中运行gdb呢?我有一个hacky解决方案,但我觉得我必须遗漏一些东西.
我正在为Elm开发一个Jupyter内核,我希望用户能够将代码分割成多个代码单元.为此,我计划让内核从多个单元格中累积代码而不编译它.一旦它收到了应该编译在一起的所有代码,它就会编译它并返回结果.
我还没想到的是如何让用户在多单元格示例中"标记"最后一个单元格.一种选择是让它们插入-- compile-cells内核所寻找的特殊注释(例如或类似的东西),但这感觉就像一个黑客.
看起来让用户在一个示例末尾的单元格上设置元数据标志(可能通过辅助扩展名)会更加jupyter-esque.设置元数据很容易,但我无法弄清楚如何访问内核中的元数据.
那么,有没有办法在内核中访问单元格元数据?具体来说,我目前正在ipykernel.kernelbase.Kernel为我的内核使用基类,所以理想情况下我可以从do_execute函数中访问单元格元数据.
如果这是不可能的,还有其他方法可以完成同样的事情吗?