五)unittest框架
unittest框架是什么?为什么要使用unittest框架
- 在unittest框架中创建测试
- 在脚本中添加断言
- 通过unittest框架对脚本进行管理
- 自定义测试报告
- unittest框架中的参数化操作
python unittest:
Selenium python unittest framework
01通过unittest框架创建测试
- 必须继承于unittest.TestCase类
- 可定义setUp和tearDown方法进行初始化,也可使用setUpClass和tearDownClass来进行初始化
- 所有测试方法必须以test开头。测试方法会在运行时自动被调用。(凡是以test开头的叫测试方法,否则为普通方法,但可以在测试方法中调用普通方法)
- 可在pycharm自带的unittest框架运行,也可以以普通的方式运行。
02Unittest测试类的运行方式:
- pycharm中,以python自带的unittets框架来运行测试类。
右键->Run 'Unittests for ... '
凡是显示Run 'Unittests for...'这种菜单,九表示以pycharm内置的unittest模块开运行文件,这样运行不需要任何调用方法。
eg:
setUp方法:每个测试方法执行前执行一次。
tearDown方法:每个测试方法结束后执行一次。
setUpClass方法:整改测试执行前执行一次。
TearDownClass方法:整改测试执行后执行一次。
2.作为一个普通的py文件执行,需要修改配置
如下:
运行:
eg:
import unittest
class demo(unittest.TestCase):
def testFunc1(self):
print('这是testLogin方法')
def testFunc2(self):
print('这是一个测试方法')
if __name__ == '__main__':
print('测试已经开始,准备调用')
unittest.main() # 开始调用定义好的测试类
运行结果:测试已经开始,准备调用会被打印出来
03测试顺序
- 测试顺序是不固定的
eg:
2.若是要固定测试顺序 ,可以字母或数字来区分
import unittest
class demo(unittest.TestCase):
def testFunc1(self):
print('这是testLogin方法')
def testFunc2(self):
print('这是一个测试方法')
1)unittest的基本使用
- 介绍
- unittest是python自带的一个模块,可以用它进行单元测试
- 作用
- 以上所需selenium操作,仅仅完成了自动化测试的操作部分
- 关于是否和预期一致的对比,可以借助unittest来完成
- 为什么使用unittest
- 能够阻止多个用例去执行
- 提供丰富的断言方法
- 提供丰富的日志与测试结果
- 核心概念
- TestCase
测试用例:用类的方法,组织对一个功能的多项测试
-
- Fixture
夹具,用来固定测试环境
-
- TestSuite
测试套件:组织多个TestCase
-
- TestRunner
测试执行,用来执行TestSuite,并可以导出测试结果
-
- 其他
- TestResult :测试报告(某种格式的测试结果)
- TestLoader :根据某一规则找到TestSuite
- 其他
2)入门案例
三个步骤:
1、创建测试类
需要继承于unittest.TestCase
2、书写测试方法
需要以test开头的示例方法,且不能有参数
3、执行测试(在Pycharm可忽略)
eg:
import unittest
#1
class FirstTest(unittest.TestCase):
#2
def test_1(self):
print("test_1")
def test_2(self):
print("test_2")
#3
if __name__ == '__main__':
unittest.main()
3)断言
断言是自动化测试中比较预期结果和实际结果的一种方式。
自动化测试若是没有断言,只能叫做自动化操作。
1、Python的断言
- 用法:
-
- assert逻辑表达式
- assert逻辑表达式,字符串
- 说明
如果逻辑表达式为真,则继续执行
如果逻辑表达式为假,则抛出AssertionError,并包含字符串信息
2、unittest的断言
python自带的断言不够强大,只知道不成立,或者不一致,但不知道哪里不一致。
TestCase有assert开头的方法,非常强大。
断言一旦失败,是不会执行断言下面的语句,会自动停止这个方法。
方法列表:
方法 |
作用 |
好处 |
判断in |
||
assert(a,b) |
||
assertNotIn(a,b) |
||
判断真假 |
||
assertTrue |
||
assertFalses |
||
判断是否相等 |
||
assertEqual |
||
assertNotEqual |
||
判断类型 |
||
assertIsInstancce(a,b) |
||
assertNotIsInstance(a,b) |
||
判断容器内容是否一致 |
||
assertListEqual(a,b) |
列表是否一致 |
显示不同之处 |
assertTupleEqual(a,b) |
元组是否一致 |
显示不同之处 |
assertSetEqual(a,b) |
集合是否一致 |
显示不同之处 |
assertDictEqual(a,b) |
字典是否一致 |
显示不同之处 |
判断小数是否相等 |
||
assertAlmostEqual(a,b) |
忽略因二进制原因导致的微小误差 |
|
assertNotAlmostEqual(a,b) |
忽略因二进制原因导致的微小误差 |
|
判断大小关系 |
||
assertGreater(a,b) |
||
assertGreaterEqual(a,b) |
||
assertLess(a,b) |
||
assertLessEqual(a,b) |
||
判断是否符合正则 |
||
assertRegex(s,r) |
正则 |
|
assertNotRegex(s,r) |
||
判断执行是否有异常 |