Django为数据库的ORM写测试例(TestCase)
models.py里的数据库定义如下:
from django.db import models
# Create your models here.
class Teachers(models.Model):
name = models.CharField(max_length=32)
class Classes(models.Model):
title = models.CharField(max_length=32)
a = models.ManyToManyField(Teachers)
class Students(models.Model):
username = models.CharField(max_length=32)
age = models.IntegerField()
gender = models.BooleanField()
cs = models.ForeignKey(Classes, on_delete=models.CASCADE)
tests.py里的内容如下,注意红色部分,是比较麻烦一点的,要构建好相关的orm语句及使用assertIn之类的来测试。
from django.test import TestCase
from .models import Students, Teachers, Classes
# Create your tests here.
class ModelTest(TestCase):
def setUp(self):
t1 = Teachers.objects.create(name="Mrs. Chane")
t2 = Teachers.objects.create(name="Mss. Fang")
Teachers.objects.create(name="ABC")
c1 = Classes(title="123")
c1.save()
c1.a.add(t1)
c1.a.add(t2)
c1.save()
Students.objects.create(username="bb",
age=23,
gender=True,
cs=c1)
def test_teacher_models(self):
result = Teachers.objects.get(name="Mrs. Chane")
self.assertEqual(result.name, "Mrs. Chane")
def test_class_models(self):
t1 = Teachers.objects.get(name="Mrs. Chane")
t2 = Teachers.objects.get(name="Mss. Fang")
t3 = Teachers.objects.get(name="ABC")
result = Classes.objects.get(title=")
self.assertEqual(result.title, "123")
self.assertIn(t1, result.a.all())
self.assertIn(t2, result.a.all())
self.assertNotIn(t3, result.a.all())
def test_student_models(self):
result = Students.objects.get(username="bb")
self.assertEqual(result.age, 23)
c1 = Classes.objects.get(title=")
self.assertEqual(result.cs, c1)
self.assertEqual(result.gender, True)
Django为数据库的ORM写测试例(TestCase)的更多相关文章
- django 多数据库时 ORM语句 选择数据库
多数据库时ORM语句选择数据库 不需要save的操作: 查询(删除的话查询语句后面加一个.delete()即可,修改的话在后面加一个.update()即可): models.表名.objects.us ...
- Django/MySql数据库基本操作&ORM操作
数据库配置: #第一步在settings里面 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':'dbna ...
- django中注册功能signup的测试例
这个是套路, 有了这些测试用例, 开发就会更有保障, 且每次重写,都好麻烦, 不好cp来得快~~:) from django.test import TestCase from django.urls ...
- 自己动手写一个简易对象关系映射,ORM(单例版和数据库池版)
准备知识 DBUtils模块 <<-----重点 DBUtils是Python的一个用于实现数据库连接池的模块 此连接池有两种连接模式: DBUtils提供两种外部接口: Persist ...
- Django基础--Django基本命令、路由配置系统(URLconf)、编写视图、Template、数据库与ORM
web框架 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构. 使用框架可以帮你快速开发特定的系统. 简单地说,就是你用别人搭建好的舞台来做表演. 尝试搭建一个简单 ...
- django 操作数据库--orm(object relation mapping)---models
思想 django为使用一种新的方式,即:关系对象映射(Object Relational Mapping,简称ORM). PHP:activerecord Java:Hibernate C#:Ent ...
- Django之 数据库ORM
一.ORM Django的 业务 少不了 跟数据库打交道,不然没有数据库保存一些数据将是一件很糟糕的事情.Django 对 数据库 支持原生的 SQL语句,但更好的对数据库支持,Django自己有一套 ...
- Django学习之数据库与ORM
二.ORM表模型 表(模型)的创建: 1.ORM之增(create.save) 一对多(ForeignKey): 多对多(ManyToManyField()): 2.ORM之删(delete) 3.O ...
- [Django框架 - 静态文件配置、request对象方法初识、 pycharm链接数据库、ORM实操增删改查、django请求生命周期]
[Django框架 - 静态文件配置.request对象方法初识. pycharm链接数据库.ORM实操增删改查.django请求生命周期] 我们将html文件默认都放在templates文件夹下 将 ...
随机推荐
- 解析word公式的解决方案(office插入和wps插入不同的解决方案)
这几天在公司的项目有个需求就是数学公式的导入,而对于word来说,插入的公式xml格式,需要转换为mathML,借用插件MathJax来进行展示,而对于wps插入的公式来说,获取到的是一个wmf图片, ...
- Java后台面试 常见问题
Java后台面试 常见问题 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米.百度.阿里.京东.新浪.CVTE.乐视家的研发岗offer.我找的是java后台开发,把常见的问题分享 ...
- UiAutomator2.0入门
总是听说UiAutomator这个框架,但从来没有使用过.找了篇入门,实践一下.实践之后感觉,uiautomator写测试代码,还是有点费劲.接口名比较多,比较长.网易的atx里使用的uiautoma ...
- linux command ------ watch
watch命令以周期性的方式执行给定的指令,指令输出以全屏方式显示.watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果, ...
- mysql concat_ws 与 concat 多字段模糊匹配应用
有时我们希望在表中多个字段检索是否有我们给出的关键字,我们可以使用 concat_ws 和 concat 连接需要检索的字段,如: select * from userInfo where conca ...
- python爬虫 抓取一个网站的所有网址链接
sklearn实战-乳腺癌细胞数据挖掘 https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campai ...
- Lua程序设计(一)面向对象概念介绍
完整代码 local mt = {} mt.__add = function(t1,t2) print("两个Table 相加的时候会调用我") end local t1 = {} ...
- git 查看一个分支是否被合并过
1.查看该分支的提交历史 git log 分支名 2.git log master |grep comitid 如果包含,就证明已经合并过 3.git branch -d 分支名,如果报错,就是没合并 ...
- html5 canvas arcTo()
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 如何使用ASP.NET开发基于推技术的聊天室?
public class Content : System.Web.UI.Page{private void Page_Load(object sender, System.EventArgs e){ ...