`

Django 单元测试Demo

阅读更多

For Development

 

1) git clone git@github.com:alecchyi/DjDemo.git

2) cd DjDemo 

3) update database settings

3) python manage.py syncdb

4) python manage.py runserver 0.0.0.0:8000

 

For Testing in unittest

 

1. create tests.py in your app, such as core/tests.py

But the pre-condition is you have a models.py

 

2. add test code in tests.py

   

   1)测试登录表单

  import LoginForm

  f = LoginForm({}) #表单数据为空

  使用f.is_valid() 判断表单是否有效

  f = LoginForm({'username':'aaaa', 'password': '123456'})  #数据正常的情况

  self.assertTrue(f.is_valid(),"输入的信息有误")#如果表单数据有效,f,is_valid()返回True

  f = LoginForm({'username':'aaaa111111111111111111', 'password': '123456'})  #用户名输入长度过长的情况

  如果表单数据有效,f,is_valid()返回False

  self.assertFalse(f.is_valid(),"输入的用户名长度过长")

   

   2)测试模型操作

  t = {'username': "teacher_01", 'password': '12345611111111111111111111111111111111111111111111111122222222222222222222222222', 'status':0}

       with self.assertRaises(Exception):   #验证字段长度

           Member.objects.get_or_create(**t)

       with self.assertRaises(Exception):

            Member.objects.get(username='teacher_01')

        members = Member.objects.all()

        self.assertEqual(members.count(), 1, "count is 1")

   3)测试登录逻辑

  from django.test.client import Client

  c = Client()

  response = c.post("/login",{'username':'ruby', 'password': '123456'})

  self.assertEqual(response.status_code, 200)  #测试通过

   

   4)测试http请求和http响应

   from django.test.client import Client

  c = Client()

  response = c.get("/detail",{'xxxx':'eeeee'})

  self.assertEqual(response.content,'yyyy') #如果请求的方法是get,判断返回的结果是否正确

  self.assertEqual("yyy",response.context["key"]) #如果页面是render新的模板,并且有传递数据变量,可以使用这个判断

   

   

3. run test command  

cd project_dir && python manage.py test app_name   #测试对应app的所有脚本

python manage.py test core.tests.UserTest.test_login_request #执行测试某个具体的功能

 

4. add fixtures data in tests.py

    tests.py 的测试类是基础django.test.TestCase,所以会有一些继承的方法,比如

    setUp: 可以把一些测试数据定义在这里

    tearDown:测试完成销毁测试数据

    

5. add log info in test code

import logging

logger = logging.getLogger("django")

logger.debug("xxxxxxx")

cat logs/debug.log

 

6. custom assert function

    assert_xxx_xxxx()

 

 

refs:

http://searchcode.com/codesearch/view/2290327

http://docs.python.org/2.7/library/unittest.html#unittest.TestCase

0
1
分享到:
评论

相关推荐

    python_Django简单Demo_配合我的博客学习

    1. **manage.py**:这是一个命令行工具,用于执行各种管理任务,如启动服务器、运行单元测试等。 2. **settings.py**:这个文件定义了项目的配置,包括数据库连接、应用注册、中间件、静态文件和媒体文件路径等。 3....

    Django项目测试实战代码

    Django提供了内置的测试框架,使得开发者能够编写和执行单元测试、集成测试以及功能测试,以便在项目的各个阶段检测潜在的问题。 一、Django测试基础 1. 单元测试:单元测试关注的是程序的最小可测试单元,如函数...

    Django REST framework 单元测试实例解析

    本文将详细介绍如何在Django REST framework环境下进行单元测试。 首先,要进行Django REST framework的单元测试,你需要有一个运行中的Django项目环境。文中提到的环境是Windows 10操作系统配合Python 3.7版本以及...

    pythonProject1_DEMO_django_

    - 测试与调试:使用Django内置的测试框架进行单元测试和集成测试。 5. Django管理命令: - `runserver`:启动本地开发服务器。 - `shell`:进入Python交互环境,方便查询数据库。 - `createsuperuser`:创建...

    python3Django视频教程网站小项目demo.zip

    12. **测试**:Django支持单元测试和集成测试,编写测试用例可以确保代码质量。 13. **部署**:最后,项目需要部署到服务器,如使用Gunicorn或uWSGI作为应用服务器,Nginx作为反向代理和静态文件服务器。 通过这个...

    基于django框架的一个小说分享网站Demo.zip

    10. 测试:Django内置了测试框架,开发者可以通过编写单元测试和集成测试确保代码的正确性和稳定性。在开发过程中,应为关键功能编写测试用例,如用户注册、小说发布等。 通过这个Django小说分享网站Demo,你可以...

    django_web.rar

    12. **测试**:编写单元测试,确保代码的正确性和健壮性。 13. **部署**:学习如何将项目部署到Web服务器,如使用Gunicorn和Nginx。 通过研究这个"Django_web"项目,你不仅会学习到Django的基础知识,还能实践如何...

    mozilla-django-oidc:Django OpenID Connect库

    运行单元测试 使用tox可以运行您拥有的许多不同版本的Python。 如果尚未安装(和可执行文件) tox ,则可以将其安装在系统Python中,也可以安装在。 安装后,只需在项目根目录中执行即可。 $ tox tox相当于为tox....

    Python编写单元测试代码实例

    其中`demo1.py`包含了一个类`MyClass`以及相关的单元测试。 ##### 2. 类定义 ```python class MyClass(): def __init__(self, x, y): self.x = x self.y = y def add(self): return self.x + self.y def ...

    vue+django+mysql的一个船舶信息管理的demo.zip

    6. **部署和测试**:了解如何将这个项目部署到服务器,以及如何进行单元测试和集成测试。 这个项目是一个很好的学习资源,可以帮助开发者熟悉前后端分离的开发模式,理解Vue.js、Django和MySQL的协同工作,为构建...

    django_user_backend_demo:django用户管理临时模板

    这个模板可能包含了单元测试和集成测试,以确保用户管理功能的正确性。 11. **部署**:项目可能还提供了部署相关的配置和指南,帮助开发者将应用上线至服务器。 通过深入学习和实践“django_user_backend_demo”,...

    kubernetes-django-demo

    1. **Pod**:Kubernetes 的基本执行单元,它可以包含一个或多个容器,如 Django 应用和其依赖的数据库。 2. **Deployment**:定义应用的副本数,负责创建和更新 Pod,确保应用的可用性和一致性。 3. **Service**:...

    后台管理系统demo

    7. **测试与部署**:开发完成后,需要进行单元测试、集成测试和压力测试,确保系统的稳定性和性能。部署通常采用云服务器,如AWS、Azure或阿里云,通过Docker容器化技术实现快速、可扩展的部署。 8. **监控与运维**...

    Python Web接口开发与测试

    - 单元测试与模块测试:讲解单元测试和模块测试的区别与实践方法。 - 接口测试:解释接口测试的分类、意义,并介绍接口测试在编程语言中的实现。 8. 开发Web接口: - HTTP协议与JSON:概述HTTP协议和JSON数据...

    demo.rar_DEMO

    对留言功能的测试应包括单元测试、集成测试和用户验收测试,确保每个功能都能正常工作,并在不同环境下表现稳定。 最后,文档编写不容忽视。清晰的用户手册、开发者指南和技术文档能够帮助用户和开发者理解系统的...

    demo4.0源代码

    5. **测试文件**:用于验证代码功能的单元测试和集成测试代码,如JUnit测试用例。 6. **资源文件**:可能包括图片、音频、样式表(CSS)、模板文件(HTML或XML)等。 7. **构建脚本**:如`build.gradle`、`Makefile`...

    市场系统DEMO

    在开发过程中,需要进行单元测试、集成测试和压力测试,确保代码质量及系统稳定性。使用工具如JUnit、Postman、JMeter等进行测试,并通过日志监控、性能监控等手段发现和解决问题。 总结,市场系统DEMO是一个涵盖了...

    小型Demo新闻发布系统

    10. **测试与调试**:开发过程中,单元测试和集成测试是必不可少的,它们确保代码的质量和系统的稳定性。开发者可能使用JUnit、pytest或Django的内置测试框架进行测试。 通过这个小型Demo新闻发布系统,开发者可以...

Global site tag (gtag.js) - Google Analytics