testcase目录下20个文件,每个文件里面是每个模块的测试用例
在mainrun函数里面加载测试用例
suite=unittest.TestLoader().discover("testcase")
ReportFileName=str(time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time())))+".html"
if "__name__"=="__main__":
runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title=u"测试用例结果",description=u"测试执行数据报告",verbosity=2,retry=2)
runner.run(suite)
fp.close
然后现在希望可以等待用例执行之后接着执行,实现循环执行所有用例
第一次修改:
suite=unittest.TestLoader().discover("testcase")
if "__name__"=="__main__":
runTimes=input("请输入您要执行的次数:")
i=0
while i <int(runTimes):
ReportFileName=str(time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time())))+str(i)+".html"
fp=open(ReportFileName,’w‘)
runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title=u"测试用例结果",description=u"测试执行数据报告",verbosity=2,retry=2)
runner.run(suite)
fp.close
i+=1
##运行发现错误,第一次运行结果正常,但是第二次运行的时候总是报结果是NoByte(具体的错误大概是这个意思,结果是空。。).
这里错误的原因后面理解了一下就是suite用例添加放在外面导致的,再来回顾一下单元测试的机制:
查看一下源码:
def run(self, result):
for test in self:
if result.shouldStop:
break
test(result)
return result
suite文件里面的run函数,也就是说其实test到最后一个的时候,这个for循环已经结束了,程序判断到这次的运行已经shouldStop,然后下次的运行self._tests=[],所以需要你再添加用例,要不然只是跑了个空。
所以修改为如下代码就可以了:
if "__name__"=="__main__":
runTimes=input("请输入您要执行的次数:")
i=0
while i <int(runTimes):
suite=unittest.TestLoader().discover("testcase")#每次跑完就再次添加用例
ReportFileName=str(time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time())))+str(i)+".html"
fp=open(ReportFileName,’w‘))
runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title=u"测试用例结果",description=u"测试执行数据报告",verbosity=2,retry=2)
runner.run(suite)
fp.close
i+=1
这是运行的时候遇到的问题,初级问题,如果描述有误,请大神指正!