相关的引入库及装饰器用法
# coding:utf-8
import unittest
from selenium import webdriver
import time
import HTMLTestRunner
class MyTest1(unittest.TestCase):
# 定义测试类,继承unittest.TestCase父类的方法,可以进行方法重写
@classmethod
def setUpClass(cls):
print "setUpClass"
# 必须用@classmethod装饰器,所有test执行前执行一次
@classmethod
def tearDownClass(cls):
print "tearDownClass"
# 必须用@classmethod装饰器,所有test执行后执行一次
def setUp(self):
# self.browser = webdriver.Chrome()
# self.browser.maximize_window()
# time.sleep(1)
print "setUp"
# 每个测试函数执行前执行
def tearDown(self):
# self.browser.quit()
print "testDown"
# 每个函数执行后执行
def test01(self):
print "test01"
@unittest.skip("无条件跳过")
# 装饰器,无条件跳过,
def test02(self):
print "test02"
@unittest.skipIf(1 == 1, "条件为真跳过")
# 装饰器,条件为真时跳过
def test03(self):
print "test03"
@unittest.skipUnless(1 == 1, "条件为真,不跳过")
# 装饰器,条件为真时不跳过
def test04(self):
print "test04"
@unittest.expectedFailure
# 和预期结果相同,不计入失败
def test05(self):
a = 15
print "test05"
self.assertTrue(a == 16)
def test06(self):
print "test06"
# 以上是装饰器及使用方法
if __name__ == '__main__':
suite = unittest.TestSuite()
# unittest.TestSuite()测试套件类,由多个测试用例组合成一个测试套件,有不同的构建方法
# 如addTests、addTest,unittest.TestLoader,unittest.makeSuite()
suite.addTest(MyTest1("test01"))
suite.addTest(MyTest1("test02"))
suite.addTest(MyTest1("test03"))
suite.addTest(MyTest1("test04"))
suite.addTest(MyTest1("test05"))
# suite.addTest(MyTest1("test06"))
# test_cases = [MyTest("test01"), MyTest("test02"), MyTest("test03"), MyTest("test04"),
# MyTest("test05"), MyTest("test06")]
# suite.addTests(test_cases)
# addTests()方法执行 0:00:00.016000s,addTests()方法执行小于0:00:00
path = "D:\\LZ\\AutoTest\\unittest_jenkins_git\\report\\report.html"
fp = open(path, "wb")
runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u"自动化测试报告", description=u"用例执行情况")
# runner = unittest.TextTestRunner()
# 使用HTMLTestRunner可以看到打印结果没有出现在控制台,但是报告中有结果,可知使用HTMLTestRunner将内容输出到报告中
runner.run(suite)
# unittest.main()
# 不需要添加套件,全部执行时,直接执行main()
添加测试套的方法1
# coding:utf-8
import unittest
import HTMLTestRunner
if __name__ == "__main__":
case_dir = r"D:\\LZ\\AutoTest\\unittest_jenkins_git\\test_case"
discover = unittest.defaultTestLoader.discover(case_dir, pattern='test*.py', top_level_dir=None)
report_path = "D:\\LZ\\AutoTest\\unittest_jenkins_git\\report\\report3.html"
report = open(report_path, "wb")
runner = HTMLTestRunner.HTMLTestRunner(stream=report, title=u"自动化测试报告", description=u"用例执行情况")
runner.run(discover)
# 通过测试报告可以看到,会执行所有test*.py文件下的test开头用例
# 通过文件名匹配的方式执行测试套件
添加测试套的方法2
# coding:utf-8
import unittest
import HTMLTestRunner
if __name__ == "__main__":
suite = unittest.TestSuite()
suite.addTests(unittest.TestLoader().loadTestsFromName('test_case.test1.MyTest1'))
suite.addTests(unittest.TestLoader().loadTestsFromName('test_case.test2.MyTest2'))
suite.addTests(unittest.TestLoader().loadTestsFromName('test_case.test3.MyTest3'))
report_path = "D:\\LZ\\AutoTest\\unittest_jenkins_git\\report\\report3.html"
report = open(report_path, "wb")
runner = HTMLTestRunner.HTMLTestRunner(stream=report, title=u"自动化测试报告", description=u"用例执行情况")
runner.run(suite)
# 通过测试报告可以看到,会执行所有test*.py文件下的test开头用例
# 不通的传入方法,用loadTestsFromName()需要绝对路径,用loadTestsFromTestCase()需要先引入该方法
添加测试套的方法3
# coding:utf-8
import unittest
import HTMLTestRunner
from test_case.test1 import MyTest1
from test_case.test2 import MyTest2
from test_case.test3 import MyTest3
if __name__ == "__main__":
suite = unittest.TestSuite()
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(MyTest1))
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(MyTest2))
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(MyTest3))
report_path = "D:\\LZ\\AutoTest\\unittest_jenkins_git\\report\\report4.html"
report = open(report_path, "wb")
runner = HTMLTestRunner.HTMLTestRunner(stream=report, title=u"自动化测试报告", description=u"用例执行情况")
runner.run(suite)
# 通过测试报告可以看到,会执行所有test*.py文件下的test开头用例