'''
web 自动化:python + selenium + unittest
selenium: 自动化测试工具
unittest: 单元测试框架 - -》 提供用例的组织和执行 / 提供丰富的断言方法
/ 提供丰富的日志和报告
步骤: 1. 导包, unittest 是自带的框架
2. 创建一个单元测试的类 lass unitMyMath(unittest.TestCase),继承 unittest.TestCase
3. 单元测试中五个特殊方法的使用
setUp(): 实例方法,进行测试用例的初始化,测试用例的前提条件写在这,
test_XXX(): 测试用例,把测试用例的步骤写在这里
tearDown(): 进行测试用例资源释放
@classmethod: 注解的方法是类方法,不用创建对象也能用,在对象进内存之前就已经存在的方法
setUpClass(cls): 类方法,给当前单元测试类的所有用例进行初始化
tearDownClass(): 给单元测试类中所有用例进行资源释放
4. unittest.main() 执行测试时,不能解决执行顺序的问题(按照测试用例(方法名)的字母顺序执行的),
也不能解决执行个数的问题(所有的执行了)
5. 可以解决 4 中的问题
'''
import unittest
import myMath
# 创建一个单元测试类
class unitMyMath(unittest.TestCase):
# 一种注解,注解的方法是类方法,不用创建对象也能用,在对象进内存之前就已经存在的方法
@classmethod
def setUpClass(cls):
print("我是 setUpClass 方法")
@classmethod
def tearDownClass(cls):
print("我是 tearDownClass 方法")
# 方法名不能改,类中不同函数顺序变了,但是执行顺序不变;
def setUp(self):
print("我是 setUp 方法")
self.mm = myMath.myMath()
# 必须是test 开头的方法,这一个就是测试用例
# 测试用例书写顺序不影响执行顺序,执行顺序控制不了, 按照测试用例(方法名)的字母顺序执行的
def test_add1(self):
print("我是 实例一 方法")
actualValue = self.mm.jia(11, 11)
expextValue = 22
self.assertEqual(actualValue, expextValue, "预期结果与实际不符")
def test_add2(self):
print("我是 实例一 方法")
actualValue = self.mm.jia(10, 11)
expextValue = 22
self.assertEqual(actualValue, expextValue, "预期结果与实际不符")
# 必须是test 开头的方法,这一个就是测试用例
def test_cheng2(self):
print("我是 实例二 方法")
actualValue = self.mm.cheng(12, 2)
expectValue = 24
self.assertEqual(actualValue, expectValue, "预期结果与实际不符")
def tearDown(self):
print("我是 tearDown 方法")
# 每次释放初始化
self.mm = None
if __name__=="__main__":
# 第一种方式: 这个方法执行的使我们单元测试类中所有的测试用例, 当我们只想测试某几个测试用例时就不可以
# unittest.main()
# 第二种方式(要求掌握)
suitt = unittest.TestSuite()
# 格式:类名(用例名)
suitt.addTest(unitMyMath("test_add1"))
suitt.addTest(unitMyMath("test_add2"))
suitt.addTest(unitMyMath("test_cheng1"))
# 第三种方式
suitt.addTests(map(unitMyMath, ["test_add1", "test_add2", "test_cheng1"]))
# 测试结果
re = unittest.TestResult
suitt.run(re)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)