登錄測(cè)試
被測(cè)試的代碼邏輯
@app.route('/login', methods=['POST'])
def login():
username = request.form.get('username')
password = request.form.get('password')
# 判斷參數(shù)是否為空
if not all([username, password]):
result = {
"errcode": -2,
"errmsg": "params error"
}
return jsonify(result)
# a = 1 / 0
# 如果賬號(hào)密碼正確
# 判斷賬號(hào)密碼是否正確
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)
單元測(cè)試代碼
import json
import unittest
from demo1_login import app
class LoginTest(unittest.TestCase):
"""為登錄邏輯編寫測(cè)試案例"""
def setUp(self):
app.testing = True
self.client = app.test_client()
def test_empty_username_password(self):
"""測(cè)試用戶名與密碼為空的情況[當(dāng)參數(shù)不全的話,返回errcode=-2]"""
response = app.test_client().post('/login', data={})
json_data = response.data
json_dict = json.loads(json_data)
self.assertIn('errcode', json_dict, '數(shù)據(jù)格式返回錯(cuò)誤')
self.assertEqual(json_dict['errcode'], -2, '狀態(tài)碼返回錯(cuò)誤')
# TODO 測(cè)試用戶名為空的情況
# TODO 測(cè)試密碼為空的情況
def test_error_username_password(self):
"""測(cè)試用戶名和密碼錯(cuò)誤的情況[當(dāng)?shù)卿浢兔艽a錯(cuò)誤的時(shí)候,返回 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, '數(shù)據(jù)格式返回錯(cuò)誤')
self.assertEqual(json_dict['errcode'], -1, '狀態(tài)碼返回錯(cuò)誤')
# TODO 測(cè)試用戶名錯(cuò)誤的情況
# TODO 測(cè)試密碼錯(cuò)誤的情況
if __name__ == '__main__':
unittest.main()
數(shù)據(jù)庫(kù)測(cè)試:
#coding=utf-8
import unittest
from author_book import *
#自定義測(cè)試類,setUp方法和tearDown方法會(huì)分別在測(cè)試前后執(zhí)行。以test_開頭的函數(shù)就是具體的測(cè)試代碼。
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()
#測(cè)試代碼
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()
#斷言數(shù)據(jù)存在
self.assertIsNotNone(author)
self.assertIsNotNone(book)
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。