UnitTest参考文章:https://blog.csdn.net/qq_54219272/article/details/123265794
目标(看完UnitTest框架该有的收获)
UnitTest的介绍
框架(framework):解决一类事情的功能集合(UnitTest解决单元测试)很多功能实现的半成品
需要按照规定书写代码
UnitTest是python自带的单元测试框架,用来做单元测试,只要安装python就可以使用。第三方框架(pytest)
对于测试人员来讲是自动化脚本的执行框架(管理运行多个测试用例)
框架特点:
核心要素(组成,5部分)
testCase(测试用例最核心的模块,是unitest的组成部分,不是手工和自动化中的用例(Test Case)
功能:每个testCase都是一个代码文件,在此代码文件中书写真正的用例
示例
'''
- 导包unitTest
- 自定义测试类
- 在测试类中书写测试方法,一个测试用例一个方法
- 执行测试用例
'''
import unittest
# 自定义类继承TestCase
class testDemo(unittest.TestCase):
def test_method1(self):
print("测试方法1")
def test_method2(self):
print("测试方法2")
testSuite(测试套件)
testRunner(测试执行)
testLoader(测试加载)
功能:对testsuite测试套件的补充,管理打包,组装多个测试用例
示例
import unittest
from test_case import testDemo
from test_case01 import testDemo1
from test_case02 import testDemo2
# 实例化suite套件对象
suite = unittest.TestSuite()
# 使用套件对象添加用例方法
suite.addTest(testDemo('test_method1'))
suite.addTest(testDemo('test_method2'))
suite.addTest(testDemo1('test_method1'))
suite.addTest(testDemo1('test_method2'))
suite.addTest(testDemo2('test_method1'))
suite.addTest(testDemo2('test_method2'))
# 实例化运行对象
runner = unittest.TextTestRunner()
# 运行对象
runner.run(suite)
# 实例化suite套件对象
suite = unittest.TestSuite()
# 使用套件对象添加用例方法
# 将一个测试类中的所有方法添加
#加载case类时unittest点不出makeSuite,查找资料后得到解答是Python升级到3版本后将
# unittest.makeSuite()
# 改为了
unittest.TestLoader().loadTestsFromTestCase(testDemo)
suite.addTest(unittest.makeSuite(testDemo))
# 实例化运行对象
runner = unittest.TextTestRunner()
# 运行对象
runner.run(suite)
Fixture(测试夹具)
# 方法级别(每个用例代码,测试方法前后都会调用)
def setUp(self):
#
pass
#
def traedown(self):
#
pass
# 类级别(在那个测试类中所有方法执行前后,都会自动调用)
# 类方法
@classmethod
def setUpClass(cls):
pass
@classmethod
def trardownClass(cls):
pass
# 模块级别(写在类外边直接定义模块)
def setUpModule():
pass
#
def teardownMethod():
pass
'''
案例:登录功能
'''
import unittest
class TestLogin(unittest.TestCase):
def setUp(self) -> None:
print("输入网址...")
def tearDown(self) -> None:
print("关闭当前页面...")
@classmethod
def setUpClass(cls) -> None:
print('1.打开浏览器...')
@classmethod
def tearDownClass(cls) -> None:
print('5.关闭浏览器...')
def test_1(self):
print("输入用户名密码验证码,点击登录1")
def test_2(self):
print("输入用户名密码验证码,点击登录2")
'''
输出结果:
1.打开浏览器...
输入网址...
输入用户名密码验证码,点击登录1
关闭当前页面...
输入网址...
输入用户名密码验证码,点击登录2
关闭当前页面...
5.关闭浏览器..
'''
使用框架的步骤
UnitTest断言
什么是断言:代替人工自动判断预期结果和世界结果是否一致
断言结果
为什么使用断言
UnitTest中常用的断言方法
assertEqual
self.assertEqual(预期结果,实际结果)
1. 如果相等,用例通过
2. 如果不相等,用例不通过,抛出异常
assertIn
self.assertIn(预期结果,实际结果)
1. 包含,通过
2. 不包含,不通过
跳过
@unnittest('跳过原因')
@unnittestif(条件,'跳过原因')
测试报告