- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个长时间运行的模拟,我需要在模拟中的给定时间停止并检索和观察一些信息,然后让模拟继续。我最近开始使用测试驱动设计方法,不幸的是我不知道如何对放入交互式 shell 的应用程序进行单元测试。
这是我正在尝试做的基本想法:
# peekaboo.py
from IPython import embed
from IPython.config.loader import Config
PAB_HEADER = 'Hello, my name is PAB. How may I help you?'
PAB_EXIT_MESSAGE = 'Goodbye, sir.'
PAB_PROMPT_IN_TEMPLATE = 'In [PAB \\#]: '
PAB_PROMPT_IN2_TEMPLATE = ' .\\D.: '
PAB_PROMPT_OUT_TEMPLATE = 'Out [PAB \\#]: '
def activate(**vars):
"""
Activate PAB 0.1 by starting an interactive shell and putting
the variables in the scope of the caller into the scope of this
method.
"""
# Add variables from caller to this scope
locals().update(vars)
cfg = None
try:
get_ipython
except NameError:
cfg = Config()
prompt_config = cfg.PromptManager
prompt_config.in_template = PAB_PROMPT_IN_TEMPLATE
prompt_config.in2_template = PAB_PROMPT_IN2_TEMPLATE
prompt_config.out_template = PAB_PROMPT_OUT_TEMPLATE
embed(config=cfg, header=PAB_HEADER, exit_msg=PAB_EXIT_MESSAGE)
# long_running_app.py
import peek_a_boo
import datetime
import random
start_dt = datetime.datetime(2013,1,1)
datetimes = [start_dt + datetime.timedelta(days=i) for i in range(10)]
dt_of_interest = datetime.datetime(2013, 1, 8)
def long_running_process(dts):
"""
simulate long running process
"""
some_data = {}
for dt in dts:
some_data[dt] = random.random()
if dt.date() == dt_of_interest.date():
peek_a_boo.activate(**locals())
return some_data
if __name__ == '__main__':
data = long_running_process(datetimes)
print data
# test_peek_a_boo.py
import nose
import mock
class TestPeekABoo(object):
def setup(self):
pass
def teardown(self):
pass
@mock.patch('IPython.embed')
def test_activate(self, mock_embed):
"""
Test that the activate method calls IPython embed with the correct arguments
"""
import peek_a_boo
a = 'Hello'
b = 'World'
peek_a_boo.activate(**locals())
mock_embed.assert_called_once_with(header=peek_a_boo.PAB_HEADER, ...)
nosetests test_peek_a_boo.py
nosetests test_peek_a_boo.py -s
最佳答案
我想出的解决方案似乎有效,所以我将其作为解决方案发布。
# test_peek_a_boo.py
import nose
import mock
class TestPeekABoo(object):
def setup(self):
pass
def teardown(self):
pass
@mock.patch('IPython.embed')
def test_activate(self, mock_embed):
"""
Test that the activate method calls IPython embed with the correct arguments
"""
import peek_a_boo
a = 'Hello'
b = 'World'
peek_a_boo.activate(**locals())
mock_embed.assert_called_once_with(header=peek_a_boo.PAB_HEADER, ...)
关于python-2.7 - 如何为嵌入 IPython Interactive Shell 的 Python 应用程序编写单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15692356/
我想跳出当前正在运行的程序并返回到 shell(无需重新启动 ipython) 最佳答案 在 Windows 上重新安装 console2 和 ipython 后,我遇到了同样的问题。如果您使用 ip
在使用 IPython 笔记本时,我越来越希望笔记本上附有一个控制台,以进行交互式编程。我发现自己添加了几行来测试代码片段,然后删除它们,这就是很好的用法。在更糟糕的用法中,我会更改同一行中的命令,一
ipthon-sql 是 ipython 的扩展,我先通过 pip install ipython-sql 安装 项目在这里:https://github.com/catherinedevlin/ip
我正在ipython Notebook中运行一些数据分析。一台单独的计算机收集一些数据并将其保存到服务器文件夹中,我的笔记本电脑会定期在该服务器上扫描新文件并进行分析。 我在while循环中执行此操作
我想让多个ipython Notebook实例在同一用户的不同端口上运行。可能吗? 类似于“NotebookApp.port”的端口列表(带有默认端口)。 最佳答案 再次运行jupyter noteb
所以 - ROOT 社区中的好人创造了以下魔法: # This is for intercepting the output of ROOT # In a cell, put %%rootprint
我正在使用 IPython 笔记本,我想在外部编辑器中编辑程序。 我如何获得 %edit file_name.py打开 Notepad++ 等编辑器。 最佳答案 运行 %edit?将为您提供%edit
精简版 我能否在 ipython 笔记本中获得 sympy 几何代数对象的漂亮 latex 风格打印? 更长的版本 在ipython笔记本,我可以从 sympy 得到各种数学对象的 pretty-pr
我不明白第四个和第六个提示中的 ${} 正在做什么,并且我找不到任何关于此的文档,Python for Unix and Linux 一书系统管理员有一个类似于第六个提示中的示例,其中变量不仅前面加上
我想在已安装 Python 2.7 的 Windows XP 计算机上运行 IPython(版本 0.12)。 我通过 Windows 二进制安装程序安装,但安装后 IPython 没有显示在菜单中,
IPython 中是否有自动关闭方括号、引号、圆括号等的选项? 我希望有一个类似于 gedit 插件中的功能。 最佳答案 通过调整 ~/.inputrc 可以让应用程序(包括 IPython)使用 r
我正在使用 IPython Web 笔记本,每个 block 之前都有一个提示编号,例如“In [68]:”。这个提示号码的用途是什么?你能用它做任何事吗?您可以/应该重置它吗? 最佳答案 IPyth
我升级到 iPython 3.0.0(Python 3.4;使用 Anaconda 环境;Mac OSX 10.9.5),打开新的 iPython Notebook session 的行为似乎发生了变
我希望能找到更多关于以下内容的文档: From one computer: C:\Python>ipython notebook opens the browser as 'IPython Noteb
我正在尝试在我的 IPython 笔记本中上传一个大小为 500MB 的网络日志文件。但是我收到错误消息“无法上传文件 >25Mb”。 有什么方法可以克服这个错误。任何帮助将不胜感激。 谢谢。 最佳答
简单地说,魔术函数 %precision 不考虑简单变量输出的浮点精度。 #Configure matplotlib to run on the browser %matplotlib noteboo
安装 IPython 后,我立即创建了一个默认配置文件: $ ipython profile create 然后,我创建了另一个,这次我给它起了名字testing: $ ipython profile
我已经尝试使用命令来拆分单元格“m -”,但它不起作用。使用 esc 或 fn 键作为修饰符时,所有键命令的重置都可以正常工作。我也处于正确的模式(edititng 模式)。 最佳答案 在编辑模式下,
我想将 ipython 笔记本中的字体类型更改为 consolas 字体类型。我首先使用 ipython profile create 但是,我不清楚在此配置文件中指定字体类型的语法。 任何帮助表示赞
我正在使用 iPython 命令行界面,经过一些操作后,我想将操作历史记录保存到笔记本文件中。但我从一开始就没有使用 iPython notebook。我还能做到吗? 最佳答案 来自@Thomas K
我是一名优秀的程序员,十分优秀!