python中的单元测试和数据库测试
admin
2023-07-20 01:22:07
0

登录测试
被测试的代码逻辑

@app.route('/login', methods=['POST'])
def login():
    username = request.form.get('username')
    password = request.form.get('password')

    # 判断参数是否为空
    if not all([username, password]):
        result = {
            "errcode": -2,
            "errmsg": "params error"
        }
        return jsonify(result)

    # a = 1 / 0
    # 如果账号密码正确
    # 判断账号密码是否正确
    if username == 'itheima' and password == 'python':
        result = {
            "errcode": 0,
            "errmsg": "success"
        }
        return jsonify(result)
    else:
        result = {
            "errcode": -1,
            "errmsg": "wrong username or password"
        }
        return jsonify(result)

单元测试代码

import json
import unittest
from demo1_login import app

class LoginTest(unittest.TestCase):
    """为登录逻辑编写测试案例"""

    def setUp(self):
        app.testing = True
        self.client = app.test_client()

    def test_empty_username_password(self):
        """测试用户名与密码为空的情况[当参数不全的话,返回errcode=-2]"""
        response = app.test_client().post('/login', data={})
        json_data = response.data
        json_dict = json.loads(json_data)

        self.assertIn('errcode', json_dict, '数据格式返回错误')
        self.assertEqual(json_dict['errcode'], -2, '状态码返回错误')

        # TODO 测试用户名为空的情况

        # TODO 测试密码为空的情况

    def test_error_username_password(self):
        """测试用户名和密码错误的情况[当登录名和密码错误的时候,返回 errcode = -1]"""
        response = app.test_client().post('/login', data={"username": "aaaaa", "password": "12343"})
        json_data = response.data
        json_dict = json.loads(json_data)
        self.assertIn('errcode', json_dict, '数据格式返回错误')
        self.assertEqual(json_dict['errcode'], -1, '状态码返回错误')

        # TODO 测试用户名错误的情况

        # TODO 测试密码错误的情况

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

数据库测试:

#coding=utf-8
import unittest
from author_book import *

#自定义测试类,setUp方法和tearDown方法会分别在测试前后执行。以test_开头的函数就是具体的测试代码。
class DatabaseTestCase(unittest.TestCase):
    def setUp(self):
        app.config['TESTING'] = True
        app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@localhost/test0'
        self.app = app
        db.create_all()

    def tearDown(self):
        db.session.remove()
        db.drop_all()

    #测试代码
    def test_append_data(self):
        au = Author(name='xxxxx')
        bk = Book(info='python')
        db.session.add_all([au,bk])
        db.session.commit()
        author = Author.query.filter_by(name='itcast').first()
        book = Book.query.filter_by(info='python').first()
        #断言数据存在
        self.assertIsNotNone(author)
        self.assertIsNotNone(book)

相关内容

热门资讯

数名中国公民因参与非法采矿被逮... 近期,马拉维有关部门在多地开展打击非法采矿专项行动,已有数名中国公民因参与非法采矿活动被逮捕。近年来...
胡锡进:军事强国与中小国家打起... 白宫终于公布了与伊朗正式签署的谅解备忘录全文,美国舆论气得直冒烟。有美国网友生气地说:这哪里是伊朗投...
俄方警告北约:任何一个北约成员... 【环球网报道 记者 张江平】综合俄新社、塔斯社等媒体18日报道,俄罗斯外交部发言人扎哈罗娃在记者会上...
伊媒称伊朗代表团赴瑞士行程未确... 伊朗塔斯尼姆通讯今天(6月18日)援引一位知情人士的消息称,截至目前,关于伊朗代表团前往瑞士的任何事...
【活力中国调研行】世界杯越位判... 6月17日,记者参加“活力中国调研行”主题采访时走进联想(天津)创新产业园。作为2026年美加墨世界...
中国电信以数智妙笔 点染乡村幸... (记者 张苏慧)江苏省南京市江宁区汤泉紫清湖、溧水区金色庄园搭建“慢直播”平台,日均观看量达2000...
一加N6手机参数曝光:联发科M... IT之家 6 月 18 日消息,一款型号为 CPH2955 的一加新机最近出现在 Geekbench...
披露伊朗最高领袖罕见涉华举动,... 伊朗议会议长卡利巴夫6月17日会见伊朗商会成员,与经济界代表举行关于推进与中国关系的座谈会。伊中商会...
热景生物:子公司创新药SGT0... 中证智能财讯 热景生物(688068)6月18日公告,子公司北京舜景生物医药技术有限公司研制的创新药...
万天控股携手深圳机器人“八大金... 深圳商报·读创客户端记者 邱清月 6月18日,中国万天控股有限公司(股份代号:1854.HK,以下简...