def test_insert_multi_user(self): # 登录user1插入一些数据 self.register('*****@*****.**') model = sh.model(test_model) new_id = self.proxyDo(model.insert, dict(title='a1')) new_id = self.proxyDo(model.insert, dict(title='a2')) item_a1 = self.proxyDo(model.get, new_id) # 登录user2插入一些数据 self.register('*****@*****.**') new_id = self.proxyDo(model.insert, dict(title='b1')) new_id = self.proxyDo(model.insert, dict(title='b2')) # 登录user1, 再次插入一个数据 self.login('*****@*****.**') new_id = self.proxyDo(model.insert, dict(title='a3')) # user1插入的数据的id是连贯的(不会受到其他用户的影响) item_a2 = self.proxyDo(model.get, new_id) self.assertEqual(item_a1.id + 1, item_a2.id) # getCount不包含user2的数据 self.assertEqual(self.proxyDo(model.getCount), 3) # 通过item.id更新数据, 效果等同于使用new_id self.proxyDo(model.update, item_a2.id, dict(title='a3`')) self.assertEqual(self.proxyDo(model.get, new_id).title, 'a3`') # 使用getOneByWhere不需要显示指出Userid curr_user_id = self.getUserid() item_a3 = sh.proxyDo(curr_user_id, model.getOneByWhere, 'title=%s', ['a3`']) self.assertEqual(item_a3.id, new_id) # 用id删除user1的所有数据 for i in self.proxyDo(model.all): self.proxyDo(model.delete, i.id) self.assertEqual(len(self.proxyDo(model.all)), 0) # 登录user2, 所有数据均在 self.login('*****@*****.**') self.assertEqual(len(self.proxyDo(model.all)), 2)
def proxyDo(self, func, *params): curr_user_id = self.getUserid() assert curr_user_id, u'请先登录' return sh.proxyDo(curr_user_id, func, *params)