入门级python测试

单元测试

概述

  • 测试方法
    • 黑盒测试:不关注程序内部的机制和实现代码,仅通过界面效果来测试程序
    • 白盒测试:基于接口文档和具体的代码逻辑,编写测试代码来测试程序
  • 测量粒度:
    • 单元测试:对单独的代码块(例如函数)分别进行测试,以保证他们的正确性
    • 集成测试:对大量的程序单元的协同工作情况做测试
    • 系统测试:同时对整个系统的正确性进行检查,而不是针对独立的片段

断言

  • 断言是编写单元测试时常用的作物表现形式
  • 断言格式
    • assert 表达式,提示信息

    • 表达式为一个程序员认定必须要成立的条件
      • 如果条件成立(表达式返回值为true),那么继续往下执行
      • 如果条件不成立,会抛出异常AssertionError,并显示提示信息
    • 提示信息一般为对应条件成立时的文字描述
      断言代码实例:
def func_div(num1, num2):
    """除法"""

    assert num2 != 0, "num2不能为0"
    assert isinstance(num1, (int, float)), "num1应为数字类型"
    assert isinstance(num2, (int, float)), "num2应为数字类型"
    print(num1 / num2)


func_div("10", 10)

单元测试:

import json
import unittest
from login_demo import app

# 1. 创建单元测试类 继承unittest.TestCase
class LoginTestCase(unittest.TestCase):

    # 2. 实现两个方法 分别完成测试 准备和收尾工作
    def setUp(self):
        # 每次执行测试用例前调用, 一般完成测试准备工作

        # 开启测试模式  如果被测试代码测试没有通过, 会在控制台显示错误位置
        app.testing = True
        # 创建客户端对象   用于发起请求
        self.client = app.test_client()

    def tearDown(self):
        # 每次执行测试用例后调用, 一般完成测试收尾工作
        pass

    # 3. 实现具体的测试用例(方法) 方法必须以test开头
    def test_empty_username_password(self):
        """测试 用户名/密码 为空 时的情况"""

        # 发起测试请求, 在用户名/密码 为空的情况下, 校验返回结果中errcode是否为-2
        response = self.client.post("/login", data={"username": "itcast"})
        # response = self.client.post("/login", data='{"username": "itcast"}', content_type='application/json')
        # 获取响应内容
        json_str = response.data
        # 转为python类型
        json_dict = json.loads(json_str)

        # 单元测试一般使用断言来进行逻辑判断
        self.assertIn("errcode", json_dict, "登录返回的json中应该包含errcode")

        errcode = json_dict.get('errcode')
        self.assertEqual(errcode, -2, "用户名/密码 为空时, 错误码应为-2")

        # TODO 只传password的情况

        # TODO username和password都不传的情况


    # 3. 实现具体的测试用例(方法) 方法必须以test开头
    def test_error_username_password(self):
        """测试 用户名/密码 错误 时的情况"""

        # 发起测试请求, 在用户名/密码 为空的情况下, 校验返回结果中errcode是否为-2
        response = self.client.post("/login", data={"username": "itcast", "password": "aaa"})
        # 获取响应内容
        json_str = response.data
        # 转为python类型
        json_dict = json.loads(json_str)

        # 单元测试一般使用断言来进行逻辑判断
        self.assertIn("errcode", json_dict, "登录返回的json中应该包含errcode")

        errcode = json_dict.get('errcode')
        self.assertEqual(errcode, -1, "用户名/密码 为空时, 错误码应为-1")

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值