TestSuite.run源碼修改 ?
摘抄自:https://blog.csdn.net/hqzxsc2006/article/details/50349664
def run(self,result, debug=False):
? ? failcount= 1? # 失敗總運(yùn)行次數(shù)
? ? class_num= 1
? ? topLevel= False
? ? if getattr(result,'_testRunEntered',False) is False:
? ? ? ? result._testRunEntered= topLevel= True
? ? for testin self:
? ? ? ? case_num= 1
? ? ? ? if result.shouldStop:
? ? ? ? ? ? break
? ? ? ? success_flag= True
? ? ? ? while success_flag:
? ? ? ? ? ? if _isnotsuite(test):
? ? ? ? ? ? ? ? self._tearDownPreviousClass(test,result)
? ? ? ? ? ? ? ? self._handleModuleFixture(test,result)
? ? ? ? ? ? ? ? self._handleClassSetUp(test,result)
? ? ? ? ? ? ? ? result._previousTestClass= test.__class__
if (getattr(test.__class__,'_classSetupFailed',False) or
? ? ? ? ? ? ? ? ? ? ? ? getattr(result,'_moduleSetUpFailed',False)):
? ? ? ? ? ? ? ? ? ? if class_num> failcount:
? ? ? ? ? ? ? ? ? ? ? ? success_flag= False
? ? ? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? ? ? time.sleep(5)
? ? ? ? ? ? ? ? ? ? ? ? result._previousTestClass= None
? ? ? ? ? ? ? ? ? ? ? ? print('類%s第%s次重新初始化執(zhí)行' % (test.__class__, class_num))
? ? ? ? ? ? ? ? ? ? ? ? class_num+= 1
? ? ? ? ? ? ? ? ? ? continue
? ? ? ? ? ? if not debug:
? ? ? ? ? ? ? ? test(result)
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? test.debug()
? ? ? ? ? ? if result.result[-1][0] == 1 or result.result[-1][0] == 2:? # 結(jié)果為fail和err用例判斷
? ? ? ? ? ? ? ? if case_num> failcount:
? ? ? ? ? ? ? ? ? ? success_flag= False
? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? print('用例%s第%s次重新執(zhí)行' % (test, case_num))
? ? ? ? ? ? ? ? ? ? case_num+= 1
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? success_flag= False
? ? if topLevel:
? ? ? ? self._tearDownPreviousClass(None,result)
? ? ? ? self._handleModuleTearDown(result)
? ? ? ? result._testRunEntered= False
? ? return result
獲取所有測試用例

屏幕喚醒我們可以用adb shell 命令執(zhí)行 (在python 使用system模塊執(zhí)行cmd命令)
tip:需要先設(shè)置取消圖形解鎖 ?
import os
com='adb shell input keyevent 26 && adb shell input swipe 500 700 500 50'
os.system(com)
HTMLTestRunner 執(zhí)行并生成報(bào)告
test_report_dir= 'F:\\result' ? ? ?????????????????????????????????#存放報(bào)告地址
now= time.strftime('%Y-%m-%d_%H_%M_%S_') ? ? #生成運(yùn)行時(shí)間點(diǎn)
filename= test_report_dir+ '\\' + now+ 'result.html' ? ? #生成報(bào)告文件名
fp= open(filename,'wb') ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#打開文件
alltest= creatSuite() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#獲取用例
runner= HTMLTestRunner(stream=fp,title=u'測試報(bào)告',description=u'用例執(zhí)行情況:')
runner.run(alltest) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #運(yùn)行用例
fp.close() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#關(guān)閉文件
new_report= new_file(test_report_dir)? ? ? ? ? ? ? ? ? ? ? ?#取最新測試報(bào)告
send_email(new_report) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #發(fā)送郵件,發(fā)送最新測試報(bào)告html?
(send_email 方法已封裝 ?可參考http://www.cnblogs.com/yufeihlf/p/5752146.html)