六.自动化测试框架(unittest)-夹具和断言

测试框架分层:单元测试——接口测试——ui测试

1.单元测试

常见的单元测试框架:unittest      pytest      junit(java)

unittest框架优点:

  1. 实现批量执行用例

  2. 提供丰富的断言方法

  3. 可以生成html形式的测试报告

核心要素

  1. testcase(测试用例)

  2. test fixure(测试夹具,用于环境的搭建和销毁,搭建setup前置条件,teardown后置条件)

  3. test suite(测试套件,把用例都放进去)

  4. test runner(用来执行用例)夹具testfixture

就像是夹心饼干外面的两片饼干,中间的奶油是测试用例

setup/teardown  (用例开始前和结束时执行)

#math3文件
#定义一个类
class Math:
    #定义初始化方法
    def __init__(self,a,b):
        self.a = a
        self.b = b

    #定义求和方法
    def add(self):
        return self.a + self.b

    # 定义求差方法
    def minus(self):
        return self.a - self.b
​

写两条用例

#test_math文件
import unittest
from math3 import Math

#定义测试类
class TestMath(unittest.TestCase):
    #实例化Math的对象
    mm = Math(5, 1)
    #定义测试用例级别的前置条件
    def setUp(self):
        print("用例开始执行")


    #定义测试用例,验证求和功能
    def test_add(self):
        # math = Math(5,1)
        num1 = self.mm.add()
        #断言结果是否一致
        self.assertEqual(num1,6)
        print("求两数之和")
    # 定义测试用例,验证差功能
    def test_minus(self):
        num2 = self.mm.minus()
     # 断言结果是否一致
        self.assertEqual(num2,4)
        print("求两数之差")


    def tearDown(self):
        print("用例执行结束")

if __name__ == '__main__':
    # 生成测试套件
    suite = unittest.TestSuite()
    #把加法用例放到测试套件里
    suite.addTest(TestMath('test_add'))
    #把减法用例放到测试套件
    suite.addTest(TestMath('test_minus'))
    # 运行用例
    runner = unittest.TextTestRunner()
    runner.run(suite)

setupclass/teardownclass(用例类开始前和结束时执行)

#test_math文件
import unittest
from math3 import Math

#定义测试类
class TestMath(unittest.TestCase):

    #测试类级别夹具
    @classmethod
    def setUpClass(cls):
        print("我是类级别测试夹具前置条件")
    @classmethod
    def tearDownClass(cls):
        print("我是类级别测试夹具后置条件")


    #实例化Math的对象
    mm = Math(5, 1)
    #定义测试用例级别的前置条件
    def setUp(self):
        print("用例开始执行")


    #定义测试用例,验证求和功能
    def test_add(self):
        # math = Math(5,1)
        num1 = self.mm.add()
        #断言结果是否一致
        self.assertEqual(num1,6)
        print("求两数之和")

    # 定义测试用例,验证差功能
    def test_minus(self):
        num2 = self.mm.minus()
     # 断言结果是否一致
        self.assertEqual(num2,4)
        print("求两数之差")


    def tearDown(self):
        print("用例执行结束")

#定义一个测试类2
class TestDome(unittest.TestCase):
    @classmethod
    #定义类级别的前置条件
    def setUpClass(self):
        print("测试类2的类级别前置条件")
    @classmethod
    #定义类级别的前置条件
    def tearDownClass(self):
        print("测试类2的类级别后置条件")

    #用例级别的夹具
    def setUp(self):
        print("测试类2用例的前置条件")
    def tearDown(self):
        print("测试类2用例的后置条件")

    #定义测试用例
    def test_demo01(self):
        self.assertEqual(1+2,3)

if __name__ == '__main__':
    # 生成测试套件
    suite = unittest.TestSuite()
    #把加法用例放到测试套件里
    suite.addTest(TestMath('test_add'))
    #把减法用例放到测试套件
    suite.addTest(TestMath('test_minus'))

    suite.addTest(TestDome('test_demo01'))
    # 运行用例
    runner = unittest.TextTestRunner()
    runner.run(suite)

setupmodle/teardownmodle(整个模块开始前和结束时执行)

#test_math文件
import unittest
from math3 import Math

#定义模块级别的测试夹具
def setUpModule():
    print("我是模块级别的前置条件")
def tearDownModule():
    print("我是模块级别的后置条件")


#定义测试类
class TestMath(unittest.TestCase):

    #测试类级别夹具
    @classmethod
    def setUpClass(cls):
        print("我是类级别测试夹具前置条件")
    @classmethod
    def tearDownClass(cls):
        print("我是类级别测试夹具后置条件")


    #实例化Math的对象
    mm = Math(5, 1)
    #定义测试用例级别的前置条件
    def setUp(self):
        print("用例开始执行")


    #定义测试用例,验证求和功能
    def test_add(self):
        # math = Math(5,1)
        num1 = self.mm.add()
        #断言结果是否一致
        self.assertEqual(num1,6)
        print("求两数之和")

    # 定义测试用例,验证差功能
    def test_minus(self):
        num2 = self.mm.minus()
     # 断言结果是否一致
        self.assertEqual(num2,4)
        print("求两数之差")


    def tearDown(self):
        print("用例执行结束")

#定义一个测试类2
class TestDome(unittest.TestCase):
    @classmethod
    #定义类级别的前置条件
    def setUpClass(self):
        print("测试类2的类级别前置条件")
    @classmethod
    #定义类级别的前置条件
    def tearDownClass(self):
        print("测试类2的类级别后置条件")

    #用例级别的夹具
    def setUp(self):
        print("测试类2用例的前置条件")
    def tearDown(self):
        print("测试类2用例的后置条件")

    #定义测试用例
    def test_demo01(self):
        self.assertEqual(1+2,3)

if __name__ == '__main__':
    # 生成测试套件
    suite = unittest.TestSuite()
    #把加法用例放到测试套件里
    suite.addTest(TestMath('test_add'))
    #把减法用例放到测试套件
    suite.addTest(TestMath('test_minus'))

    suite.addTest(TestDome('test_demo01'))
    # 运行用例
    runner = unittest.TextTestRunner()
    runner.run(suite)

2.常用断言

import unittest

class TestAssert(unittest.TestCase):
    #定义前置条件
    def setUp(self):
        print("用例前置条件")
        # self.name = input("请输入姓名:")

        # #定义一个变量存名字
        # self.age = int(input("请输入年龄:"))
    # 定义后置条件
    def tearDown(self):
        print("这是用例的后置条件")

    # #定义两个参数是否相等
    # def test_demo01(self):
    #     self.assertEqual(self.name,"老王","55")
    # #不相同则成功,相同则失败提示用例失败
    # def test_demo02(self):
    #     self.assertNotEqual(self.name,"救救","用例失败")


# #输入年龄判断是否大于18岁,大于或等于则成功,否则失败
# 结果true成功,false失败
#     def test_demo03(self):
#         self.assertTrue((self.age+10)>=18,"未达18岁,用例失败")

    #结果false成功,true失败
    def test_demo04(self):
        self.assertFalse(1+1==2,"用例失败")

#主方法
if __name__ =='__main__':
    unittest.main()

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值