3.3.3 删除订单
1.urls.py
... url(r'^delete_orders/(?P<orders_id>[0-9]+)/(?P<sign>[0-9]+)/$', views.delete_orders), ...
(1)orders_id为删除的单个订单或者总订单id。
(2)sign=1或者3表示删除单个订单。
(3)sign =2表示删除总订单。
(4)sign=1或者2表示从查看总订单进入删除。
(5)sign=3表示从查看单个订单进入删除。
2.views.py
... # 删除订单 # id=1,3删除单个订单,id=2删除总订单 # id=1,2从查看总订单进入,id=3从查看单个订单进入 def delete_orders(request,orders_id,sign): util = Util() username = util.check_user(request) if username=="": uf = LoginForm() return render(request,"index.html",{'uf':uf,"error":"请登录后再进入"}) else: #如果删除单个订单 if sign == "1" or sign=="3": #通过主键获得单个订单的内容 order_filter = get_object_or_404(Order,id=orders_id) #获得当前订单所属于的总订单 orders_filter = get_object_or_404(Orders,id=order_filter.order_id) #删除这个单个订单 Order.objects.filter(id=orders_id).delete() #判断这个总订单下是否还有没有商品 judge_order = Order.objects.filter(order_id = orders_filter.id) #如果没有商品了 if (len(judge_order))==0: #删除这个订单所处于的总订单记录 Orders.objects.filter(id=orders_filter.id).delete() #如果标记为3,返回商品列表页面 if sign=="3": response = HttpResponseRedirect('/goods_view/') # 跳入商品列表页面 #如果标记为1,返回查看所有订单页面 if sign=="1": response = HttpResponseRedirect('/view_all_order/') # 跳入商品列表页面 #如果还有商品,且标记为3,返回订单确认页面 elif sign=="3": response = HttpResponseRedirect('/view_order/'+str(orders_filter.id)+'/') # 跳入订单确认 #否则返回所有订单页面 else: response = HttpResponseRedirect('/view_all_order/') # 跳入查看所有订单 #如果删除总订单 if sign == "2": #删除单个订单 Order.objects.filter(order_id=orders_id).delete() #删除总订单 Orders.objects.filter(id=orders_id).delete() #返回查看所有订单页面 response = HttpResponseRedirect('/view_all_order/') # 跳入查看所有订单 return response ...
(1)登录用户通过判断语句ifsign == "1" or sign=="3"来就决定是否删除单独一个订单。
(2)如果是删除单独一个订单。
①通过语句order_filter = get_object_or_404(Order,id=orders_id),获得单独订单信息内容。
②通过语句orders_filter =get_object_or_404(Orders,id=order_filter.order_id)获得当前订单所属于的总订单信息。
③通过语句Order.objects.filter(id=orders_id).delete()中删除这个订单,需要注意的是如果这个订单所属的总订单都没有订单了,那么就必须把这个订单给删除。
④通过语句judge_order = Order.objects.filter(order_id= orders_filter.id)判断这个订单所属的总订单是否没有订单了,如果判断语句if (len(judge_order))==0结果为真,那么通过语句Orders.objects.filter(id=orders_filter.id).delete()把这条订单所属于的总订单给删除,然后根据sign=="1"还是sign=="3"返回方法goods_view()或view_order。
(3)如果ifsign=="2",也就是说删除的是总订单,先通过语句Order.objects.filter(order_id=orders_id).delete()删除这个总订单下的所有单个订单,然后通过和语句Orders.objects.filter(id=orders_id).delete()删除这个总订单,最后调用方法view_all_order()。
(4)删除单个订单可以从订单确认页面进入,也可以从查看所有订单页面进入。删除总订单只能从查看所有订单页面进入。参见图3-19和图3-20。
3.模板
这里的模板为查看所有订单页面和订单确认页面,没有单独模板页面。
4.接口测试
1)测试用例
表3-17为删除订单的测试用例。设计两个测试用例,一个是删除总的订单,另外一个是删除单个订单。
表3-17 删除订单的测试用例
编号 |
描述 |
期望结果 |
1 |
删除当前建立的单个订单 |
删除成功,且在显示页面中不显示 |
2 |
删除当前建立的总个订单 |
删除成功,且在显示页面中不显示 |
2)XML数据文件
在orderConfig.xml后面加上。
... <!--- 删除当前建立的单个订单 --> <case> <TestId>order-testcase004</TestId> <Title>订单信息</Title> <Method>get</Method> <Desc>删除当前建立的单个订单</Desc> <Url>http://127.0.0.1:8000/delete_orders/0/1/</Url> <InptArg></InptArg> <Result>200</Result> <CheckWord>NOT,订单id:0</CheckWord><!--- 检查单个订单是否被删除 --> </case> <!--- 删除当前建立的总个订单 --> <case> <TestId>order-testcase005</TestId> <Title>订单信息</Title> <Method>get</Method> <Desc>删除当前建立的总个订单</Desc> <Url>http://127.0.0.1:8000/delete_orders/0/2/</Url> <InptArg></InptArg> <Result>200</Result> <CheckWord>NOT,上海市外滩一号</CheckWord><!--- 检查总订单是否被删除 --> </case> </node>
3)测试代码
测试代码保持不变。
星云测试
奇林软件
联合通测
顾翔凡言:
软件测试正在生病,而且病得不轻,自动化测试被要不吹得太火,要不一点都不会,自动化比不过开发、测试又找不到缺陷,丢了西瓜也捡不到芝麻。