表3-8为查看购物车中内容的测试用例,上一节把商品放入购物车内,在这里验证进入购物车的商品信息是否可以正确地被显示出来。
表3-8 查看购物车测试用例
编号 | 描述 | 期望结果 |
---|---|---|
1 | 添加一个商品进购物车 | 在购物车里可以查看到这个商品 |
在chartConfig.xml中添加如下代码。
... <!--- 添加进购物车,在购物车列表页面查看到这个商品 --> <case> <TestId>chart-testcase002</TestId> <Title>购物车</Title> <Method>get</Method> <Desc>查看购物车中的内容</Desc> <Url>http://127.0.0.1:8000/view_chart/</Url> <InptArg></InptArg> <Result>200</Result> <CheckWord><td>龙井茶叶</td></CheckWord><!--- 购物车中显示了添加的商品 --> </case>... |
---|
在<CheckWord>…</CheckWord>中,“<td>龙井茶叶</td>”为“<td>龙井茶叶</td>”。
在这里再做小小地优化,把变量s作为类的成员变量,这样使用到s的地方就改造为self.s。
... class Util: def __init__(self): self.url = "http://127.0.0.1:8000" self.s = requests.session()...def run_test(self,mylist,values,sign):... data = self.s.post(Login_url,data=payload)...data = self.s.post(run_url)...data = self.s.post(run_url,data=payload)... data = self.s.get(run_url,params=payload)... data = self.s.get(run_url)...def initChart(self): data = self.s.get(self.url+"/remove_chart_all/")... data = self.s.get(self.url+"/remove_chart/0/")... |
---|
然后改造测试代码chartTest.py。
... #开始测试 def chart_test(self): #初始化购物车,把购物车中所有内容均删除 data = self.util.initChart() for mylist in self.mylists: data = self.util.run_test(mylist,self.userValues,self.sign) #验证返回码 self.assertEqual(mylist["Result"],str(data.status_code)) #验证返回文本 self.assertIn(mylist["CheckWord"],str(data.text)) print (mylist["TestId"]+" is passsing!")... |
---|
可以看到,在写代码的时候,需要不停地优化代码,这样可以使得以后更好更方便地调用代码,从而使代码达到较高的复用性和较好的易维护性。所以代码的优化也是通过不断迭代来完成的,一开始就完成一个优秀的代码,是不太可能的,就像我写这本书一样,也是经过不断调整优化而完成的。读者在日常工作中除了编写代码以外,其他地方也要慢慢学会使用这种不断优化的方法。
...url(r'^update_chart/(?P<good_id>[0-9]+)/$', views.update_chart),... |
---|
(1)good_id为购物车中需要修改商品的商品id。
...# 修改购物车中商品的数量def update_chart(request,good_id): util = Util() username = util.check_user(request) if username=="": uf = LoginForm() return render(request,"index.html",{'uf':uf,"error":"请登录后再进入"}) else: #获取编号为good_id的商品 good = get_object_or_404(Goods, id=good_id) #获取修改的数量 count = (request.POST.get("count"+good_id, "")).strip() #如果数量值<=0,报出错信息 if int(count)<=0: #获得购物车列表信息 my_chart_list = util.add_chart(request) #返回错误信息 return render(request, "view_chart.html", {"user": username, "goodss": my_chart_list,"error":"个数不能小于等于0"}) else: #否则修改商品数量 response = HttpResponseRedirect('/view_chart/') response.set_cookie(str(good.id),count,60*60*24*365) return response... |
---|
(1)登录的用户通过语句good= get_object_or_404(Goods, id=good_id)获取修改商品数量的商品信息。
(2)通过count = (request.POST.get("count"+good_id,"")).strip()获得修改商品数量的值。
①如果获取的值小于或者等于零,系统调用view_chart.html模板报“个数不能小于等于0”的提示信息(由于模板view_chart.html 中修改商品数量使用的是<input type="number">数据类型,所以里面的类型肯定为整数类型)。在这里注意的是,由于要返回view_chart.html,必须通过语句my_chart_list= util.add_chart(request)把购物车中的所有商品均获取到。
② 否则通过语句response.set_cookie(str(good.id),count,60*60*24*365)把指定商品的数量进行修改,返回方法view_chart()。
当用户修改商品数量以后,不管填写的数字是否合法,均返回查看购物车页面,所以在这里的模板与“查看购物车”模块的模板一样。
表3-9为修改购物车中商品数量的测试用例。在这里设计了三个测试用例。第一个测试用例为正常的测试用例,修改数量为9个。由于购物车中数量是不可以小于0的,所以设计了第二个和第三个测试用例,分别把个数修改为0个和-1个,系统应该有相应的报错信息“个数不能小于等于0”。
表3-9 修改购物车中商品数量测试用例
编号 | 描述 | 期望结果 |
---|---|---|
1 | 修改购物车中的商品数量为9 | 修改成功并且正确地显示 |
2 | 修改购物车中的商品数量为0 | 报错误信息“个数不能小于等于0” |
3 | 修改购物车中的商品数量为-1 | 报错误信息“个数不能小于等于0” |
... <!--- 修改购物车中商品数量为9 --> <case> <TestId>chart-testcase003</TestId> <Title>购物车</Title> <Method>post</Method> <Desc>修改购物车中商品数量为9</Desc> <Url>http://127.0.0.1:8000/update_chart/0/</Url> <InptArg>{"count0":"9"}</InptArg> <Result>200</Result> <CheckWord><input type="number" value="9"</CheckWord><!--- 购物车中显示了商品数量的变更 --> </case> <!--- 修改购物车中商品数量为0 --> <case> <TestId>chart-testcase004</TestId> <Title>购物车</Title> <Method>post</Method> <Desc>修改购物车中商品数量为0</Desc> <Url>http://127.0.0.1:8000/update_chart/0/</Url> <InptArg>{"count0":"0"}</InptArg> <Result>200</Result> <CheckWord>个数不能小于等于0</CheckWord><!--- 验证购物车中商品数量=0是不允许的 --> </case> <!--- 修改购物车中商品数量为-1 --> <case> <TestId>chart-testcase005</TestId> <Title>购物车</Title> <Method>post</Method> <Desc>修改购物车中商品数量为-1</Desc> <Url>http://127.0.0.1:8000/update_chart/0/</Url> <InptArg>{"count0":"-1"}</InptArg><!--- 验证购物车中商品数量<0是不允许的 --> <Result>200</Result> <CheckWord>个数不能小于等于0</CheckWord> </case>... |
---|
在修改数量的form表中,输入框的name为"count"+商品的id,由于测试数据的商品id均为0,所以输入框的name为count0
测试代码在这里不做任何修改。
星云测试
http://www.teststars.cc
奇林软件
http://www.kylinpet.com
联合通测
http://www.quicktesting.net