基于Django的电子商务网站开发(连载23)

简介: 基于Django的电子商务网站开发(连载23)

3.4.3 商品信息的模糊查询


1. urls.py

...
url(r'^search_name/$', views.search_name),
...


1.  views.py

...
# 商品搜索
def search_name(request):
    util = Util()
    username =  util.check_user(request)
    if  username=="":
        uf = LoginForm()
        return  render(request,"index.html",{'uf':uf,"error":"请登录后再进入"})
    else:
        count =  util.cookies_count(request)
        #获取查询数据
        search_name =  (request.POST.get("good", "")).strip()
        #通过objects.filter()方法进行模糊匹配查询,查询结果放入变量good_list
        good_list =  Goods.objects.filter(name__icontains=search_name)
        #对查询结果进行分页显示
        paginator =  Paginator(good_list, 5)
        page =  (request.GET.get('page')).strip()
        try:
            contacts =  paginator.page(page)
        except  PageNotAnInteger:
            # If page is not  an integer, deliver first page.
            contacts =  paginator.page(1)
        except EmptyPage:
            # If page is out  of range (e.g. 9999), deliver last page of results.
            contacts =  paginator.page(paginator.num_pages)
        return  render(request, "goods_view.html", {"user": username,  "goodss": contacts,"count":count})
...


这里的实现方法与商品概要信息基本上是一致的,不同的地方在于在概要信息中使用代码good_list = Goods.objects.all()获取全部商品信息,而在模糊查询中使用代码good_list= Goods.objects.filter(name__icontains=search_name)来显示符合条件的商品信息。


2.  模板

同商品信息列表


3.  接口测试

1)测试用例

        3-5为商品模糊搜索的测试用例,在这里设计了三个测试用例。


1)正常的测试用例,查询数据库中符合条件的商品信息,系统应该把这个商品信息正确地被显示出来。

2)查询字符为空的字符串,系统应该把所有的数据都显示出来。

3)主要检验模糊查询中是否存在SQL注入,在查询字符中输入SQL模糊查询通配符‘%’,系统应该显示商品标题中含有‘%’的商品,由于测试程序中不含有‘%’的商品,所以查询结果应该为空。


3-5 商品信息搜索的测试用例

编号

输入数据

期望结果

1

目前已在存在商品名称的一部分

这个商品信息被被查询且显示出来

2

空字符

显示所有内容

3

%

不显示所有内容


2XML文件

goodsConfig.xml中加入如下内容。

...
         <!--- 输入数据:目前已经存在商品名称的子串,期望结果:这个商品被查询出来 -->
         <case>
                  <TestId>goods-testcase003</TestId>
                  <Title>商品信息</Title>
                  <Method>post</Method>
                  <Desc>查询商品</Desc>
                  <Url>http://127.0.0.1:8000/search_name/</Url>
                  <InptArg>{"good":"龙井"}</InptArg>
                  <Result>200</Result>
                  <CheckWord>龙井</CheckWord><!--- 包含查询商品名称的一部分 -->
         </case>
         <!--- 输入数据:空字符,期望结果:显示所有内容 -->
         <case>
                  <TestId>goods-testcase004</TestId>
                  <Title>商品信息</Title>
                  <Method>post</Method>
                  <Desc>查询商品</Desc>
                  <Url>http://127.0.0.1:8000/search_name/</Url>
                  <InptArg>{"good":""}</InptArg>
                  <Result>200</Result>
                  <CheckWord>龙井茶叶</CheckWord><!--- 与初始化商品名称保持一致 -->
         </case>
         <!--- 输入数据:%,期望结果:不显示所有内容 -->
         <case>
                  <TestId>goods-testcase005</TestId>
                  <Title>商品信息</Title>
                  <Method>post</Method>
                  <Desc>查询商品</Desc>
                  <Url>http://127.0.0.1:8000/search_name/</Url>
                  <InptArg>{"good":"%"}</InptArg>
                  <Result>200</Result>
                  <CheckWord>NOT,龙井茶叶</CheckWord><!---与初始化商品名称在商品列表中不显示,NOT加逗号表示不显示 -->
         </case>
...


最后一个测试数据中<CheckWord>NOT,龙井茶叶</CheckWord>表示“龙井茶叶”不被查询出来,其中“NOT”表示不显示。


3)测试代码

根据<CheckWord>NOT,龙井茶叶</CheckWord>表示“龙井茶叶”不被查询出来,修改测试代码goodsInfoTest.py中的test_goods_info()方法。


...
#开始测试
        def  test_goods_info(self):
                for mylist  in self.mylists:
                        data  = self.util.run_test(mylist,self.userValues,self.sign)
                        #验证返回码
                         self.assertEqual(mylist["Result"],str(data.status_code))
                        #验证返回文本
                        #如果mylist["CheckWord"]标签中存在"NOT"字符串,调用断言方法assertNotIn()
                        if "NOT" in  mylist["CheckWord"]:
                              self.assertNotIn((mylist["CheckWord"]).split(",")[1],str(data.text))
                        #否则调用断言方法assertIn()
                        else:
                                 self.assertIn(mylist["CheckWord"],str(data.text))
                         print (mylist["TestId"]+" is passsing!")
...


请特别注意粗体字部分,这里不作进一步介绍了。


星云测试

http://www.teststars.cc

奇林软件

http://www.kylinpet.com

联合通测

http://www.quicktesting.net


顾翔凡言:

      软件测试正在生病,而且病得不轻,自动化测试被要不吹得太火,要不一点都不会,自动化比不过开发、测试又找不到缺陷,丢了西瓜也捡不到芝麻。

目录
相关文章
|
4月前
|
前端开发 搜索推荐 算法
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
中草药管理与推荐系统。本系统使用Python作为主要开发语言,前端使用HTML,CSS,BootStrap等技术和框架搭建前端界面,后端使用Django框架处理应用请求,使用Ajax等技术实现前后端的数据通信。实现了一个综合性的中草药管理与推荐平台。具体功能如下: - 系统分为普通用户和管理员两个角色 - 普通用户可以登录,注册、查看物品信息、收藏物品、发布评论、编辑个人信息、柱状图饼状图可视化物品信息、并依据用户注册时选择的标签进行推荐 和 根据用户对物品的评分 使用协同过滤推荐算法进行推荐 - 管理员可以在后台对用户和物品信息进行管理编辑
97 12
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
|
8月前
|
搜索推荐 算法 前端开发
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
203 4
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
|
安全 测试技术 Python
基于Django的电子商务网站开发(连载39)
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript, 主文件是:zentao.py 。bugreport是禅道,script是python3+selenium 3,按照规则在禅道上书写的bugreport可由zentao.py程序生成py测试脚本。
77 0
基于Django的电子商务网站开发(连载39)
|
存储 安全 前端开发
基于Django的电子商务网站开发(连载37)
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript, 主文件是:zentao.py 。bugreport是禅道,script是python3+selenium 3,按照规则在禅道上书写的bugreport可由zentao.py程序生成py测试脚本。
156 0
基于Django的电子商务网站开发(连载37)
|
测试技术 Python
基于Django的电子商务网站开发(连载36)
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript, 主文件是:zentao.py 。bugreport是禅道,script是python3+selenium 3,按照规则在禅道上书写的bugreport可由zentao.py程序生成py测试脚本。
98 0
基于Django的电子商务网站开发(连载36)
|
XML 测试技术 数据库
基于Django的电子商务网站开发(连载34)
基于Django的电子商务网站开发(连载34)
72 0
基于Django的电子商务网站开发(连载34)
|
XML 测试技术 数据格式
基于Django的电子商务网站开发(连载33)
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript, 主文件是:zentao.py 。bugreport是禅道,script是python3+selenium 3,按照规则在禅道上书写的bugreport可由zentao.py程序生成py测试脚本。
100 0
基于Django的电子商务网站开发(连载33)
|
SQL XML 前端开发
基于Django的电子商务网站开发(连载40)
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript, 主文件是:zentao.py 。bugreport是禅道,script是python3+selenium 3,按照规则在禅道上书写的bugreport可由zentao.py程序生成py测试脚本。
188 0
|
测试技术 Python
基于Django的电子商务网站开发(连载38)
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript, 主文件是:zentao.py 。bugreport是禅道,script是python3+selenium 3,按照规则在禅道上书写的bugreport可由zentao.py程序生成py测试脚本。
94 0
|
XML 测试技术 数据格式
基于Django的电子商务网站开发(连载35)
基于Django的电子商务网站开发(连载35)
109 0