【问题描述】xEG100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
现在需要使用unittest测试一个求排列数的函数perm(n,m),即从n个不同的对象中选出m个来组成一个有序序列,一共可以有多少种不同的序列。如perm(5,2)的值为5*4=20,perm(6,3)的值为6*5*4=120。xEG100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
输出结果:xEG100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
Ran 1 tests in 0.183sxEG100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
PASSED(successes=1)。xEG100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
备注:PASSED表示通过测试。xEG100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
【题前思考】xEG100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
根据问题描述,填写表11-1-2。xEG100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
表11-1-2 问题分析xEG100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
xEG100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
【操作提示】xEG100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
使用unittest进行单元测试需要以unittest.TestCase为父类创建一个类,每一个测试用例是这个类的一个方法。然后,通过执行unittest.main( )就可以启动测试过程并输出测试结果信息,如果有不成功的测试,可以通过单击跳转到相应的测试用例。xEG100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
【程序代码】xEG100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
文件action2.py的内容为需要测试的函数,此处为求排列数的函数。xEG100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
xEG100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
【代码分析】xEG100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
①:导入需要测试的action2模块。xEG100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
②③:MyTestCase类的每一个方法就代表了一个测试,可以根据需要在里面添加测试代码。assertEqual方法用于判断两个参数的值是否相等,在这里表示判断函数调用action2.perm(5,2)的值是否为20,action2.perm(6,3)的值是否为120,如果两个参数的值相等则通过测试,反之测试失败。xEG100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
④:调用unittest.main( )启动测试,输出测试结果。xEG100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
【优化提升】xEG100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
如果不想在模块中编写代码启动测试过程,可以在PyCharm窗口底部的“Terminal(终端)”面板中直接运行命令启动测试。此时if__name=='__main__'及其以后的代码都不用写,直接输入命令python-m unittest-v a11_1_2使用unittest进行测试.py即可,输出结果与上述相同。命令执行结果如图11-1-2所示。xEG100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
xEG100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
图11-1-2 在终端启动unittestxEG100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
【技术全貌】xEG100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
在使用unittest进行单元测试时,除了可使用方法assertEqual外,还有许多用于测试其他关系的方法,见表11-1-3。关于unittest的详细内容请扫描二维码查看官方文档。xEG100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
表11-1-3 unittest模块中用于测试的方法xEG100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
xEG100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库