单元测试,代码测试代码

Posted fengkunlei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单元测试,代码测试代码相关的知识,希望对你有一定的参考价值。

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

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

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()







以上是关于单元测试,代码测试代码的主要内容,如果未能解决你的问题,请参考以下文章

四则运算单元测试

词频统计单元测试

单元测试,代码测试代码

Django单元测试测试视图问题,怎么解决

单元测试

CTS测试CtsWindowManagerDeviceTestCases模块的testShowWhenLockedImeActivityAndShowSoftInput测试fail项解决方法(代码片段