0
点赞
收藏
分享

微信扫一扫

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


问题描述:

编写程序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代码:

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

 

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

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

 

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

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

 

输出文件2out.txt内容:

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

 

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

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

 

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

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

 

 

 

公众号“Python小屋”

举报

相关推荐

0 条评论