一般来说,增删改查的测试可以作为一个流程,那么删除就要放到最后测,因此称为增查改删。
以数据集的增查改删除为例简单了解一下业务,通过数据库建表来了解我们需要的操作。
Mongodb的python mongoengine ORM建表
1 # -*- coding: utf-8 -*- 2 3 import datetime 4 from flask_mongoengine import MongoEngine 5 from mongoengine import signals 6 import helper 7 8 db = MongoEngine() 9 10 11 class ProductAttribute(db.EmbeddedDocument): 12 k = db.StringField(required=True, max_length=50) 13 v = db.StringField(required=True, max_length=100) 14 15 meta = { 16 'indexes': [ 17 { 18 'fields': ['k', 'v'], 19 'unique': True 20 } 21 ] 22 } 23 24 25 class Dataset(db.Document): 26 name = db.StringField(required=True, max_length=50) 27 type = db.StringField(max_length=20) 28 x_consumer_custom_id = db.StringField() 29 30 description = db.StringField(max_length=500) 31 status = db.StringField(required=True, max_length=50, default="created") 32 33 created_at = db.DateTimeField(required=True, default=datetime.datetime.utcnow) 34 updated_at = db.DateTimeField(required=True) 35 deleted_at = db.DateTimeField(default=None) 36 37 meta = { 38 'indexes': [ 39 { 40 'fields': ['name', 'x_consumer_custom_id'], 41 'unique': True 42 } 43 ] 44 } 45 46 def to_dict(self): 47 return helper.mongo_to_dict(self, []) 48 49 50 class ImageItem(db.Document): 51 image_id = db.StringField(required=True, max_length=50) 52 uri = db.URLField() 53 title = db.StringField(required=True, max_length=50) 54 55 description = db.StringField(max_length=500) 56 status = db.StringField(required=True, max_length=50, default="created") 57 58 created_at = db.DateTimeField(required=True, default=datetime.datetime.utcnow) 59 updated_at = db.DateTimeField(required=True) 60 61 meta = { 62 'indexes': [ 63 { 64 'fields': ['image_id'], 65 'unique': True 66 } 67 ] 68 } 69 70 def to_dict(self): 71 return helper.mongo_to_dict(self, []) 72 73 74 class ProductItem(db.Document): 75 product_id = db.StringField(required=True, max_length=50) 76 name = db.StringField(required=True, max_length=100) 77 category = db.StringField(required=True, max_length=50) 78 79 description = db.StringField(max_length=500) 80 status = db.StringField(required=True, max_length=50, default="created") 81 shelf = db.StringField(required=True, max_length=50, default="on") 82 83 images = db.ListField(db.URLField()) 84 85 attributes = db.EmbeddedDocumentListField(ProductAttribute) 86 87 created_at = db.DateTimeField(required=True, default=datetime.datetime.utcnow) 88 updated_at = db.DateTimeField(required=True) 89 90 meta = { 91 'indexes': [ 92 { 93 'fields': ['product_id'], 94 'unique': True 95 } 96 ] 97 } 98 99 def to_dict(self): 100 return helper.mongo_to_dict(self, []) 101 102 103 def update_timestamp(sender, document, **kwargs): 104 document.updated_at = datetime.datetime.utcnow() 105 106 signals.pre_save.connect(update_timestamp, sender=Dataset) 107 signals.pre_save.connect(update_timestamp, sender=ProductItem) 108 signals.pre_save.connect(update_timestamp, sender=ImageItem)