python中的单元测试和数据库测试

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

@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:[email protected]/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)

原文地址:http://blog.51cto.com/13914991/2175480

时间: 2024-11-13 09:15:48

python中的单元测试和数据库测试的相关文章

Visual Studio 单元测试之五---数据库测试

原文:Visual Studio 单元测试之五---数据库测试 数据库的单元测试主要是测试数据库中的数据是否符合特定的条件,Visual Studio 2010支持下面几种数据的单元测试类型(Visual Studio 2008 不支持数据库测试): 类型 说明 Data Checksum 对数据进行Checksum检验 Empty ResultSet 测试执行的SQL语句返回结果集是否为空 Execution Time 测试执行时间 Expected Schema 测试结果集中的列和数据类型是

python中的单元测试

python中的单元测试可以使用doctest,unittest完成 1.doctest的使用 (1)写入程序如下(cubetest.py): #!/usr/bin/python def cube(x): """ cube a number and return the result >>> cube(2) 8 >>> cube(3) 27 >>> cube(4) 64 """ return

Python中通过cx_Oracle访问数据库遇到的问题总结

以下是Python中通过cx_Oracle操作数据库的过程中我所遇到的问题总结,感谢我们测试组的前辈朱勃给予的帮助最终解决了下列两个问题: 1)安装cx_Oracle会遇到的问题:在Windows下安装cx_Oracle不要尝试用pip install的方式了!下载官网的对应版本的msi安装文件,我的python2.7是32位的,oracle的instantClient也是32位的,这个cx_Oracle也选择32位的下载,安装成功后进入python模式下import cx_Oracle没问题,

Python 中 unittest 单元测试框架中需要知识点

现在正在使用 unittest 框架,我们来记录下这个框架的知识点: unittest 框架:我们在写接口用例的时候,会继承 unittest 当中的 TestCase 的类和方法,私有方法除外,来识别以 test_ 开头的测试用例,unittest 相当于是一个包,我们来使用包里面的工具: 1. 单元测试的概念 测试不是来测试Java写的模块.函数.类 而是测试代码输入和输出,比对是否正确 往往单元测试, 是有开发来写, 用于测试自己写的模块.函数.类是否正确 有的一些单元测试任务, 是由测试

在Android studio中进行单元测试和ui测试

1.配置支持单元测试的工程 在写测试之前,让我们做下简单的检查,确保工程配置正确. 首先,确认在Build Variants窗口内的Test Artifact中选择了"Unit Tests". 然后,在工程的src文件夹内创建test和test/java文件夹.需要注意的是,你不能在Android视图下进行这些操作,要么在系统的文件管理器内创建,要么在工程窗口左上方点击下拉菜单选择Project视图.最终的工程结构应该是这样的: (在codelab的剩余部分,你可以返回继续使用Andr

python中的单元测试模块unittest

unittest的属性: 该文以思维导图的形式描述unittest的重要属性. 其中前四个是unittest最核心的三个属性. testcase:测试用例: testsuite:测试套件,多个测试用例组成一个测试套件: test runner:执行测试用例,该类中的run()方法会执行testsuite/testcase中的run()方法.测试的结果会保存在testresult中. 还有一个很重要的就是fixture,看着是挺陌生的,其实就是一个测试用例执行之前环境的准备和执行之后环境的销毁.

Python中从SQL型数据库读写dataframe型数据

Python的pandas包对表格化的数据处理能力很强,而SQL数据库的数据就是以表格的形式储存,因此经常将sql数据库里的数据直接读取为dataframe,分析操作以后再将dataframe存到sql数据库中.而pandas中的read_sql和to_sql函数就可以很方便得从sql数据库中读写数据. read_sql 参见pandas.read_sql的文档,read_sql主要有如下几个参数: sql:SQL命令字符串 con:连接sql数据库的engine,一般可以用SQLalchemy

python中unittest单元测试框架-加载测试用例、运行测试用例、生成测试报告

unittest中加载测试用例的方法很多,这里先介绍addTest中添加用例-测试类的实例的方式: import os import unittest # 创建suite对象 suite = unittest.TestSuite() # 第一种方法:一个一个添加用例 from class1228_unittest_loader.test_cases.test_setup import * # 添加测试用例到suite套件里面:用例-测试类的实例 suite.addTest(TestSetUp('

Python项目中的单元测试

引入 单元测试负责对最小的软件设计单元(模块)进行验证,unittest是Python自带的单元测试框架. 单元测试与功能测试都是日常开发中必不可少的部分,本文演示了Python中unittest单元测试框架的基本使用. 一个简单的测试例子 定义一个类,简单的实现add.sub两个方法,并对其进行单元测试. 待测试的m1.py文件内容如下: class MyClass(object): """just a test case""" def __i