目录
unittest2介绍:
基本流程:
代码举例如下:
进阶-封装重复代码:
unittest2介绍:
- 是python自带的一个单元测试的测试框架
- 可以结合selenium、request实现UI和接口的自动化测试
- 无需额外安装,python中已经加载了unittest2框架
基本流程:
- 所以第一步我们直接导入unittest2包即可:import unittest2
- 创建一个类并继承unittest2代码库中的TestCase类,表示我们当前的类是一个测试用例类:class unittest2Demo(unittest2.TestCase)
- 声明一个以test开头的方法:def test_login(self):
- 以test开头表示这个方法是一个测试用例方法,该方法可以直接运行
- 普通的方法就不能直接运行,只有被调用才会执行
- 重写父类中的两个方法:
- setUp(): 在每条测试用例方法开始之前,要做的预置条件。
- tearDown(): 在每条测试用例方法结束后,要做的场景还原。
- 重写父类中的两个方法:
- setUpClass(): 在类中所有方法开始之前,要做的预置条件
- tearDownClass(): 在类中所有方法之后,要做的场景还原工作。
- 需要在方法上面添加装饰器@classmethod
- 在最后添加main方法:
- if__name__=='__main__':?
- 如果在当前文件中右键运行,才会执行下面的语句
- 如果在其他文件中右键运行,下面的语句不能被调用和执行
- 调用unittest2.main()方法:表示调用unittest2的主方法,这样就会执行当前类中的所有方法。
- Note:?
- 根据光标位置的不同,可以选择执行不同的测试用例。
- 测试用例的执行顺序取决于字母的排列顺序a-z
代码举例如下:
# unittest2是一个单元测试框架,接下来学习如何使用这个框架
# 导入包
import unittest2
# 创建类,并继承代码库中的TestCase,表示当前类是测试用例类
class Unittest2Demo(unittest2.TestCase):
def test_login(self):
print("登录")
self.func()
def func(self):
print("不以test开头的普通方法")
def test_register(self):
print("注册")
def test_aaa(self):
print("测试字母排列顺序")
def setUp(self):
print("setUp")
def tearDown(self):
print("tearDown")
@classmethod
def setUpClass(cls):
print("setUpClass")
@classmethod
def tearDownClass(cls):
print("tearDownClass")
if __name__ == '__main__':
unittest2.main()
将光标放在main方法那一行,运行结果如下:
setUpClass
tearDownClass
setUp
测试字母排列顺序
tearDown
setUp
登录
不以test开头的普通方法
tearDown
setUp
注册
tearDown
Ran 3 tests in 0.015s
OK
Process finished with exit code 0
?分析结果:
- 一共创建了三个以test开头的测试方法以及一个普通方法,在直接调用的时候只有测试方法被调用。
- 以a开头的case被优先执行
- 每个case都会执行一遍setUp和tearDown。
- 在类中全部case开始和结束的时候执行setUpClass和tearDownClass.
- 调用setUp和tearDown,setUpClass和tearDownClass的时候和书写位置无关,只要声明就会在每个case调用之前执行。
进阶-封装重复代码:
- 创建一个父类BaseTestCase, 实现setUp和tearDown,setUpClass和setUpClass和tearDownClass方法
- 以后的测试用例继承这个父类,继承父类,就继承了父类的所有方法,就不需要再每个用例都重新写方法了。
|