码迷,mamicode.com
首页 > 其他好文 > 详细

单元测试,代码测试代码

时间:2020-11-17 13:02:42      阅读:28      评论:0      收藏:0      [点我收藏+]

标签:ted   期望   login   python3   bug   nba   相同   表示   elf   

# 单元测试,代码测试代码

针对函数、类,检测他的某个方面是否有问题的测试
开发
测试用例是一组单元测试,每个单元测试是一起核实函数和类在各种情况下的行为都符合要求
为什么要做单元测试?

1、单元测试 ->集成测试 ->
2、从底层发现bug,越早发现bug越好解决避免后期重构,节约时间、经费

全覆盖特别困难,只针对重要的行为编写测试
tdd
为了做单元测试,unittest框架,单元测试框架

1、创建一个login.py

 def login_check(username,password):
    """

    :param username:账号
    :param password:密码
    :return:
    """
    if 6 <= len(password) <= 18:
        if username == ‘python34‘ and password == ‘lemonban‘:
            return {"code": 0,"msg":"登陆成功"}
        else:
            return {"code": 1,"msg":"账号或密码不正确"}
    else:
        return {"code":1,"msg":"密码长度在6-18位之间"}
# __name__ 是模块的特殊变量
# 当直接之前当前模块的时候__name__=‘__main__‘
# 当被其他模块导入的时候__name__ = 模块名
# pass占位符,什么都不是,表示跳过
if __name__ == ‘__main__‘:
    pass
2、创建一个test_case.py
  导入unittese,导入被检测函数或者类
  一般系统模块放在最上面
  第三方模块放在系统模块的下面
  自己写的模块放在最下面
      import unittest
      from login import login_check


# 创建测试类,继承unittest.TeseCase类,测试用例
class Testlog(unittest.TestCase):
    """
    测试登录功能
    """

    # 3、如果有初始(前置)条件和结束(后置)条件,重写脚手架(fixture)方法
    # 4、定义单元测试函数,函数名要以test开头
    def test_log_ok(self):
        """
        账号密码正确
        :return:
        """
        # 1、测试数据
        test_data = {"username": "python34", "password": "lemonban"}
        # 期望数据
        expect_data = {"code": 0, "msg": "登陆成功"}
        # 测试步骤
        # 执行函数-,**解包,键相同,相当于把test_data中的两个值传给了login_check
        res = login_check(**test_data)
        # 3、断言(判断)assert下的Equal是判断是否相同
        self.assertEqual(expect_data, res)
        # 如果不相等会抛出assertError,断言错误
        print(‘第一条用例‘)

    def test_log_password_error(self):
        """
        账号正确,密码错误
        :return:
        """
        # 1、测试数据
        test_data = {"username": "python342", "password": "lemonban"}
        # 期望结果
        expected = {"code": 1, "msg": "账号或密码不正确"}
        # 2、测试步骤
        res = login_check(**test_data)
        # 3、断言
        self.assertEqual(expected, res)
        print("第二条用例")

    def test_password_ok_pass_error(self):
        test_date = {"username": "python34", "password": "lemonban1"}
        expected = {"code": 1, "msg": "账号或密码不正确"}
        res = login_check(**test_date)
        self.assertEqual(res,expected)
        print(‘第三条用例‘)

    def test_password_lenth_little(self):
        test_data = {"username": "python34", "password": "lem"}
        expected = {"code": 1, "msg": "密码长度在6-18位之间"}
        res = login_check(**test_data)
        self.assertEqual(expected,res)
        print(‘第四条用例‘)

    def test_password_lenth_blg(self):
        test_data = {"username": "python34", "password": "lemonbanaaaaaaaaaaaaaaa1"}
        expected = {"code":1,"msg":"密码长度在6-18位之间"}
        res = login_check(**test_data)
        self.assertEqual(expected,res)
        print(‘第五条用例‘)
# 5、调用unittese.main()来执行测试用例
if __name__ == ‘__main__‘:
    a = 1
    # 会自动收集TestCase类里的单元测试函数
    unittest.main()

单元测试,代码测试代码

标签:ted   期望   login   python3   bug   nba   相同   表示   elf   

原文地址:https://www.cnblogs.com/fengkunlei/p/13962492.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!