Django中编写测试程序

5 篇文章 0 订阅
1 篇文章 0 订阅

Django中编写测试程序

开发django项目有段时间了,最近修改程序多次引入新的错误,思考原因,简单的功能测试其实能够发现的。功能多了后,回归测试确实很麻烦。
下面是一个简单的测试用例。

# -*- encoding=utf-8 -*-
import os
from django.test import TestCase, Client
from fund.models import FundProp, FundPlan
from account.models import MyUser, Department


class ListFundsTest(TestCase):
    """
        Test for fund app
    """
    def setUp(self):
        """
            set up db and vars before every testcases run
        """
        self.c = Client()
        self.u1 = MyUser.objects.create_user(login_name="testuser1", worker_id='002', password='123')
        u2 = MyUser.objects.create_user(login_name='testuser2', worker_id='003', password='123')
        u3 = MyUser.objects.create_user(login_name='hh', worker_id='004', password='123')
        d = Department.objects.create(department_name=u'财务科')
        d1 = Department.objects.create(department_name=u'办公室')
        d2 = Department.objects.create(department_name=u'人事科')
        self.u1.departments.add(d)
        self.u1.save()
        u2.departments.add(d2)
        u3.departments.add(d1, d)

    def test_list_funds_login(self):
        """
        login as testuser1 and request list funds, it will get funds list with nothing
        """
        resp = self.c.post('/accounts/login/', {'username':'testuser1', 'password': '123'})
        self.assertEqual(resp.status_code, 302)
        resp = self.c.get('/fund/list_funds/')
        self.assertEqual(resp.status_code, 200)
        self.assertTrue(len(resp.context_data.get('fund_list')) == 0)

    def test_list_funds_nologin(self):
        """
        request list funds with no login, it would redirect to login page
        """
        resp = self.c.get('/fund/list_funds/')
        self.assertEqual(resp.status_code, 302)
        self.assertEqual(resp.url, 'http://testserver/accounts/login/?next=/fund/list_funds/')

运行测试用例

python manage.py test fund
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值