import time
import unittest
from base.box import Email, HtmlEmailAttachment
from base.html_test_runner import HTMLTestRunner
class TestRunner:
def runner(self):
'''挑选用例执行'''
# 实例化TestSuite()类,创建suite测试套件
suite = unittest.TestSuite()
# 加载用例到测试套件中,cases为用例所在的模块
suite.addTests(unittest.TestLoader().discover('cases',pattern='login_testec.py'))
suite.addTests(unittest.TestLoader().discover('cases.user',pattern='add_address_test.py'))
suite.addTests(unittest.TestLoader().discover('cases.user',pattern='reg_user_test.py'))
# 添加单个用例
# suite.addTest(LoginTest('test_login_fail_0_admin'))
# 创建html报告文件
t = time.strftime('%Y-%m-%d_%H-%M-%S')
report_path = r'reports\ranzhi_report_%s.html' %t
report_file = open(report_path,mode='wb')
# 引入第三方工具HTMLTestRunner运行用例和生成报告内容
test_runner = HTMLTestRunner(stream=report_file,
title='ecshop自动化测试报告',
description='报告的详细内容:')
# 运行测试用例
test_runner.run(suite)
# 关闭文件
report_file.close()
# 发送报告到邮箱,切记参数为文件的路径report_path,不是一个打开的文件report_file
# Email().send_email(report_path)
HtmlEmailAttachment().email_attachment(report_path)
if __name__ == '__main__':
TestRunner().runner()
unittest.TextTestRunner(verbosity=2).run(tests)
这里的verbosity是一个选项,表示测试结果的信息复杂度,有三个值
0 (静默模式): 你只能获得总的测试用例数和总的结果 比如 总共100个 失败20 成功80
1 (默认模式): 非常类似静默模式 只是在每个成功的用例前面有个“.” 每个失败的用例前面有个 “F”
2 (详细模式):测试结果会显示每个测试用例的所有相关的信息
并且 你在命令行里加入不同的参数可以起到一样的效果
加入 --quiet 参数 等效于 verbosity=0
加入--verbose参数等效于 verbosity=2
什么都不加就是 verbosity=1</pre>