内容简介:之前用木兰代码基于 tornado 框架编写服务后端,完成了代码编辑、运行的最基本操作。本周为其添加了 sqlite 数据库,用于保存输入历史并提供简单的补全功能,效果如下(输入“运行”后下拉框提示以往包含“运行”...
之前用木兰代码基于 tornado 框架编写服务后端,完成了代码编辑、运行的最基本操作。本周为其添加了 sqlite 数据库,用于保存输入历史并提供简单的补全功能,效果如下(输入“运行”后下拉框提示以往包含“运行”的输入):
【木兰安装方法:pip install ulang
,用法与例程请见 PyPI。源码位于开源中国。 注意:必需 python 3.7,源码文件需 UTF-8 编码】
下面是访问数据库以提供补全项的木兰代码:
type 预估请求: SessionMixin, tornado.web.RequestHandler {
func $get {
提示 = self.get_argument('term', nil)
所有请求 = []
// TODO: 优化?
历史请求 = self.session.query(过往请求)
if 提示 != nil {
历史请求 = 历史请求.filter(过往请求.请求.like("%" + 提示 + "%"))
}
历史请求 = 历史请求.order_by(desc(过往请求.时间)).group_by(过往请求.请求).distinct()
// logging.info(str(历史请求)) // 可查看 sql 语句
// TODO: 通过拼音补全
for 记录 in 历史请求 {
所有请求.append(记录.请求)
}
$write({"历史" : 所有请求})
}
}
期间发现,sqlalchemy 库中有个 func 方法,与木兰关键词重名。尚未想到如何在木兰中如何调用,暂不深究,今后需要此方法时再说。
改进测试
之前一直用运行木兰进程获取输出的方式进行功能测试,好处是 1)与用户使用方式很接近,能确保测试有效 2)可用同样方式测试原始木兰可执行文件 ulang-0.2.2.exe。但运行很慢,100 多个用例,每个都起一个进程,本机大约 30 秒。正好上周为开发环境获取输出内容,通过重定向标准输出的方式可以获得 exec 的输出,于是重用在测试中,并改写为 unittest 测试,现在测试所有用例耗时半秒左右。但发现 windows 下字符串相关测试未过,尚需研究。
另外,改为重定向输出后,现在也可以对报错信息(如 词不识.ul
)进行测试了。
其他
- 修正语法错误中的列位置
- 添加
try 表达式 {}
语法,但未发布 pypi 新版本,因为暂没用在实例中
附:代码量统计
主要部分的代码行数统计,格式为:上次->现在。
- 木兰代码量 3204 -> 3260
- 运行环境,实现与测试大部为木兰代码:524 -> 582
- 木兰测试用例,包括部分实用小程序(如井字棋):2680 -> 2678 (报错信息测试用例替代了源码中的注释)
- Python 代码量(木兰实现与测试框架):2675 -> 2721
分析器/语法分析器.py
:1013 -> 1015分析器/词法分析器.py
:207测试/期望值表.py
(从“运行所有.py”中提取):131测试/unittest/语法树.py
,确保生成的语法树与原始版本一致:66 -> 88测试/运行所有.py
,检验所有木兰测试代码片段:195 -> 62测试/unittest/所有用例.py
:24- 未变
分析器/语法树.py
:202环境.py
,定义全局方法:172交互.py
,交互环境(REPL):148分析器/语法成分.py
,从语法分析器中提取出来的枚举常量:82中.py
,主程序:74功用/反馈信息.py
:71功用/调试辅助.py
,:57setup.py
, 34测试/unittest/交互.py
,交互环境相关测试:28分析器/错误.py
:26
以上所述就是小编给大家介绍的《为木兰开发环境雏形添加输入补全,功能测试大提速》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 我用Python实现了一个小说网站雏形
- 带你从0开发图表库系列-初具雏形
- “智慧交通”初现雏形,城市出行难题迎刃而解
- AY 用wpf写个ide雏形的记录[1/15]
- 木兰编程语言重现——功能初具雏形,添加中文报错信息
- Beta 版三星 Linux on DeX 上手体验:已初具雏形
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Learn Python 3 the Hard Way
Zed A. Shaw / Addison / 2017-7-7 / USD 30.74
You Will Learn Python 3! Zed Shaw has perfected the world’s best system for learning Python 3. Follow it and you will succeed—just like the millions of beginners Zed has taught to date! You bring t......一起来看看 《Learn Python 3 the Hard Way》 这本书的介绍吧!