UnitTest测试套件及运行器

1.Skip装饰器与断言使用

  [email protected]():无理由跳过,强制跳过

  [email protected](1 == 2,"跳过"),条件为假时就跳过,条件为真就执行用例

  [email protected](1 == 1,"if跳过"),条件为真就跳过,条件为假就不跳过

  [email protected]:当这条测试用例出现错误时,系统选择忽略错误

几种skip装饰器示例:

import unittest

from selenium import webdriver


class Test_demo(unittest.TestCase):

def test_1(self):
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
ti = driver.title
print(ti)
@unittest.skip("这条用例不执行,暂时跳过")
@unittest.skipUnless(1 == 2,"跳过")
@unittest.skipIf(1 == 1,"if跳过")
@unittest.expectedFailure
def test_2(self):
print("run test2")

def test_3(self):
print("run test3")

# @unittest.expectedFailure
def test_4(self):
print(3/0)

if __name__ == '__main__':
unittest.main()

 断言

    

断言:
通过self.assert引出
常用的几种断言*****:
self.assertEqual()
self.assertTrue()
self.assertIsNone()
self.assertAlmostEqual():多用于浮点数。判断是否几乎相等(例如0.3154和0.3153)

断言示例:
class Test_demo(unittest.TestCase):

def test_1(self):
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
ti = driver.title
print(ti)
self.assertEqual(ti,'百度一下,你就知道',msg='断言失败')
# self.assertNotEqual(ti,'百度一下,你就知道',msg='Not断言失败')

if __name__ == '__main__':
unittest.main()

测试套件与运行器:

  

测试套件和运行器是UnitTest框架特有的产物,主要用于管理测试用例的运行

创建测试套件时,需要在UnitTest框架以外进行创建

示例:   

import os
import unittest
from unittest_skip import Test_demo
from HTMLTestRunner import HTMLTestRunner
#创建测试套件,其本质就是一个list集合
suite = unittest.TestSuite()
1.添加指定的测试用例
suite.addTest(Test_demo('test_4'))#通过unitDemo直接添加test_case4这一个测试用例
suite.addTest(Test_demo('test_3'))
2.添加多条测试用例
cases = [Test_demo('test_1'),Test_demo('test_2')]
suite.addTests(cases)
方法3
3. 设置运行的条件,所有符合条件的py文件都会被执行,文件中的测试用例会依照原本的顺序运行
test_dir = './'
discover = unittest.defaultTestLoader.discover(start_dir=test_dir, pattern='unit*.py')
4.运行指定的类对象中的测试用例
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(Test_demo))
5.运行执行名称的类对象中的测试用例
suite.addTests(unittest.TestLoader().loadTestsFromName('unittest_skip.Test_demo'))
创建运行器,执行测试套件
run = unittest.TextTestRunner()
run.run(suite)

HTMLTestRunner测试报告:

1. py文件复制粘贴在Lib路径下,通过导包运行

2. 其本质是测试报告运行器,与TextTestRunner差不多


# 创建测试报告运行器
report_name = '这是段誉写的测试报告'
report_title = '这里是段誉标题'
report_desc = '鸭梨你真的很过分,因为我才讲过'
report_path = './report/'
report_file = report_path + 'report2.html'
# 判断report_path是否存在,如果不存在则新增一个该路径
if not os.path.exists(report_path):
os.mkdir(report_path)
else:
pass
# 生成测试报告
with open(report_file, 'wb') as report:
# 添加测试用例
suite.addTest(Test_demo('test_3')) # 通过UnitDemo直接添加test_3这一个测试用例
suite.addTest(Test_demo('test_2'))
suite.addTest(Test_demo('test_4'))
# 套件通过TextTestRunner对象进行运行≈unittest.main()
# 如果结合HTMLTestRunner使用,则需要调用HTMLTestRunner中的运行器
htmlrunner = HTMLTestRunner(stream=report,title=report_title,description=report_desc)
htmlrunner.run(suite)
# 与TextTestRunner比较
# ttrunner = unittest.TextTestRunner()
# ttrunner.run(suite)
report.close()

 

 

猜你喜欢

转载自www.cnblogs.com/Murraya/p/12544045.html