2020年06月10日----Python单元测试(unittest框架)(上)

'''
==================================
cooding:utf-8
@Time    :2020/6/110:18 
@Author  :henry
@Email   :yinpingwei@gmail.com
@File    :class_work.py
@Software:PyCharm
===================================
'''


# 单元测试
"""
单元测试框架有:
1.unittest框架——4大核心概念
        TestCase(测试用例)   
        TestSuite(测试套件)
        TextTestRunner(执行用例/呈现结果)
        Fixture(前置后置条件)
        
    编写用例-》收集用例-》执行用例-》生产结果
    
2.pytest框架

单元测试:就是对单个模块或者是单个类或者是单个函数进行测试
自动化的测试:
代码实现的用例,代码执行用例,代码判断结果,代码生成测试报告

用例编写步骤:
格式:
1. import unittest   # 导入unittest模块,被测文件或者其中的类
2. class xxxx(unittest.TestCase)   # 创建一个测试类 ,继承unittest.TestCase
3. def Testxxx(self)       # 在定义一个测试函数,以test_开头,定义测试函数。
   def test_xxx(self):     # 每一个test_开头的函数,就是一个测试用例。
4. 测试用例中:
    1、测试数据、期望结果
    2、测试步骤 
    3、断言:预期结果与实际结果的比对
       AssertionError: 断言失败 - 用例失败
       assert 表达式(True表示通过,False表示失败)
       self.assertXXXXX()
       
unittest用例断言方法:
1.assertEqual(a,b)      检查:a==b   
2.assertNotEqual(a,b)   检查:a!=b
3.assertTrue(x)         检查:boxl(x)is True
4.assertFalse(x)        检查:boxl(x)is False
5.assertis(a,b)         检查:a is b
6.assertisNot(a,b)      检查:a is not b
7.assertin(a,b)         检查:a in b
8.assertNotin(a,b)      检查:a not in b

"""

import unittest      # 引入unittest单元测试

# 从导入(py30.class_unittpy)包.(Login_settings)模块 导入(login_check)函数
from py30.class_unittpy.Login_settings import login_check

class TestLogin(unittest.TestCase):         # 定义测试类,继承unittest.TestCase

    def test_success(self):        # 成功登录用例
        # 1.测试数据   已经导入
        # 2.测试步骤
        res = login_check('woshijinyao300','lemonbanpy30')    # 给与测试数据账号与密码
        # 3、断言:预期结果与实际结果的比对
        # assert res == {"code": 0, "msg": "登录成功"}   # 第一种比对,一般不用
        self.assertEqual(res,{"code": 0, "msg": "登录成功"})   # 断言:判断预期结果与实际结果是否一致,一般用这种



课后作业

利用unittest框架,完成课程案例未实现的测试用例
1、掌握unittest编写用例的步骤
2、掌握unittest的断言表达
案例代码、5个测试用例描述,

import unittest      # 引入unittest单元测试
# 从导入(lass_unittpy)包.(Login_settings)模块 导入(login_check)函数
from py30.class_unittpy.Login_settings import login_check

class TestLogin(unittest.TestCase):         # 定义测试类,继承unittest.TestCase

    def test_success(self):        # 成功登录用例
        res = login_check('woshijinyao300','lemonbanpy30')    # 给与测试数据账号与密码
        print(str(res))
        try:
            self.assertEqual(res,{"code": 0, "msg": "登录成功"})   # 断言:判断预期结果与实际结果是否一致
        except:
            print('用例执行失败')
            raise
        else:
            print('用例执行成功')

    def test_error_password(self):   # 错误的密码登录
        res1 = login_check('woshijinyao300', 'lemonbanpy')       # 给与测试数据,正确的账号与错误的密码
        print(str(res1))
        try:
            self.assertEqual(res1, {"code": 1, "msg": "账号或密码不正确"})  # 断言:判断预期结果与实际结果是否一致
        except:
            print('用例执行失败')
            raise
        else:
            print('用例执行成功')


    def test_error_account(self):    # 错误的账号登录
        res2 = login_check('woshijinyao', 'lemonbanpy30')      # 给与测试数据,错误的账号与正确的密码
        print(str(res2))
        try:
            self.assertEqual(res2, {"code": 1, "msg": "账号或密码不正确"})  # 断言:判断预期结果与实际结果是否一致
        except:
            print('用例执行失败')
            raise
        else:
            print('用例执行成功')

    def test_no_account(self):       # 账号为空
        res3 = login_check('lemonbanpy30')       # 给与测试数据,空的账号与正确的密码
        print(str(res3))
        try:
            self.assertEqual(res3, {"code": 1, "msg": "所有的参数不能为空"})  # 断言:判断预期结果与实际结果是否一致
        except:
            print('用例执行失败')
            raise
        else:
            print('用例执行成功')


    def test_no_password(self):    # 密码为空
        res4 = login_check('woshijinyao300')  # 给与测试数据,正确的账号与空密码
        print(str(res4))
        try:
            self.assertEqual(res4, {"code": 1, "msg": "所有的参数不能为空"})  # 断言:判断预期结果与实际结果是否一致
        except:
            print('用例执行失败')
            raise
        else:
            print('用例执行成功')


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

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值