Py学习  »  Python

OJ系统原理与实现:Python自动化测试另一个Python程序功能是否正确

Python小屋 • 3 年前 • 378 次点击  

推荐图书:

《Python程序设计(第3版)》,(ISBN:978-7-302-55083-9),董付国,清华大学出版社,2020年6月第1次印刷,8月第4次印刷

京东购买链接:https://item.jd.com/12668739.html

天猫、当当均已上架,可以选择自己常用平台搜索“董付国 第3版”找到本书。
配套资源:教学大纲、电子教案、微课视频、PPT课件、例题源码、习题答案、考试系统。
《Python程序设计(第3版)》配套教学大纲
《Python程序设计(第3版)》课后习题答案

=======================

问题描述:

编写程序2subprocess_test.py测试另一个Python程序2subprocess_homework.py的功能是否正确(不考虑具体的代码实现方式)。程序2subprocess_homework.py预设的功能为“键盘输入若干行使用英文半角逗号分隔的自然数,把该行每个自然数加5后按原来的格式输出(每行若干自然数,使用英文半角逗号分隔),如果没有输入任何内容就直接回车确认表示输入结束”。为了实现自动测试,程序2subprocess_test.py调用程序2subprocess_homework.py,并使其自动从文件2in.txt中读取内容作为测试用例,并把处理后的结果自动写入文件2out.txt中。如果文件2out.txt中的内容和预期一样,则表示程序2subprocess_homework.py的功能正确。为避免被测程序2subprocess_homework.py中有死循环,如果20秒内没有执行完,直接结束被测程序的执行,并判断功能错误。

在本文代码基础上,结合Socket或其他方式实现在线提交代码,即可实现Python在线编程评测系统,董付国老师免费提供的“Python小屋刷题神器”也是基于这个原理实现编程题在线评测的。

被测程序2subprocess_homework.py代码:


测试主程序2subprocess_test.py代码:


测试数据文件2in.txt内容:


输出文件2out.txt内容:


修改被测程序文件,故意制造语法错误,如图,


重新运行测试主程序,结果如下:




温馨提示:
关注微信公众号“Python小屋”,在公众号后台发送消息“大事记”可以查看董付国老师与Python有关的重要事件;发送消息“教材”可以查看董付国老师出版的Python系列教材(已累计印刷超过100次)的适用专业详情;发送消息“历史文章”可以查看董付国老师推送的超过1000篇原创技术文章;发送消息“会议”或“培训”可以查看近期董付国老师的培训安排;发送消息“微课”可以查看董付国老师免费分享的超过500节Python微课视频;发送消息“课件”可以查看董付国老师免费分享的Python教学资源;发送消息“小屋刷题”可以下载“Python小屋刷题神器”,免费练习1139道客观题和82道编程题,题库持续更新。
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/74038
 
378 次点击