unittest中的断言

断言的类型

assertEqual(预期结果,实际结果)

判断预期结果和实际结果是否相等,如果相等, 用例通过,如果不相等,抛出异常, 用例不通过

assertIn(预期结果,实际结果)

判断预期结果是否包含在 实际结果中, 如果存在,用例通过, 如果不存在,抛出异常,用例不通过

在这里插入图片描述

import unittest


class TestAssert(unittest.TestCase):
    def test_equal_1(self):
        self.assertEqual(10, 10)  # 用例通过

    def test_assert_2(self):
        self.assertEqual(10, 11)  # 用例不通过

    def test_in(self):
        # self.assertIn('admin', '欢迎 admin 登录')  # 包含 通过
        # self.assertIn('admin', '欢迎 adminnnnnnnn 登录')  # 包含 通过
        # self.assertIn('admin', '欢迎 aaaaaadminnnnnnnn 登录')  # 包含 通过
        # self.assertIn('admin', '欢迎 adddddmin 登录')  # 不包含 不通过
        self.assertIn('admin', 'admin')  # 包含 通过
import unittest

# 导入需要使用的 assert 语句
from hm_02_assert import TestAssert

# 创建一个测试用例集合
suite = unittest.TestSuite()

# 添加测试用例
suite.addTest(unittest.makeSuite(TestAssert))

# 使用 Python 的单元测试运行器(TextTestRunner)运行测试用例
unittest.TextTestRunner().run(suite)

参数化

通过参数的方式来传递数据,从而实现数据和脚本分离。并且可以实现用例的重复执行。(在书写用例方法的时候,测试数据使用变量代替,在执行的时候进行据说传递)

环境准备

因为参数化的插件 不是 unittest 自带的,所以想要使用 需要进行安装
Python 中 包(插件,模块) 的安装,使用 pip 工具

pip install parameterized
pip install -i https://pypi.douban.com/simple/ parameterized

使用

  1. 导包 from para… import para…
  2. 修改测试方法,将测试方法中的测试数据使用 变量表示
  3. 组织测试数据,格式 [(), (), ()], 一个元组就是一组测试数据
  4. 参数化,在测试方法上方使用装饰器 @parameterized.expand(测试数据)
  5. 运行(直接 TestCase 或者 使用 suite 运行)
import unittest
#1. 导包 from para... import para...
from tools import add
from parameterized import parameterized
#3. 组织测试数据,格式 [(), (), ()], 一个元组就是一组测试数据
data = [(1, 1, 2), (1, 2, 3), (2, 3, 5), (4, 5, 9)]

# 定义一个测试用例类
class TestAdd(unittest.TestCase):
    # 定义一个测试函数
    #4. 参数化,在测试方法上方使用装饰器 @parameterized.expand(测试数据)
    @parameterized.expand(data)
    def test_add(self, a, b, expect):
        print(f'a:{a}, b:{b}, expect:{expect}')
        #2. 修改测试方法,将测试方法中的测试数据使用 变量表示
        self.assertEqual(expect, add(a, b))


if __name__ == '__main__':
    unittest.main()

参数化练习

在这里插入图片描述

json 文件

[
[1, 1, 2],
[1, 2, 3],
[2, 3, 5],
[4, 5, 9],
[10, 20, 30]
]

读取 json 文件

import json
def build_add_data():
with open('add_data.json') as f:
data = json.load(f) # [[], [], []] ---> [(), ()]
return data

代码文件

import unittest
from read_data import build_add_data
from tools import add
from parameterized import parameterized
data = [(1, 1, 2), (1, 2, 3), (2, 3, 5), (4, 5, 9)]
class TestAdd(unittest.TestCase):
@parameterized.expand(build_add_data())
def test_add(self, a, b, expect):
print(f'a:{a}, b:{b}, expect:{expect}')
self.assertEqual(expect, add(a, b))
if __name__ == '__main__':
unittest.main()
  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值