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

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

4. 接口测试

1)测试用例

        3-12为送货地址的添加与显示的测试用例。在这里设计两个测试用例。

1)添加一个当前登录用户不存在的收货地址信息,系统应该添加成功。

2)第二个测试用例添加一个当前登录用户已经存在的地址信息,系统应该报“这个地址已经存在!”的错误信息。


3-12 送货地址的添加与显示的测试用例

编号

描述

期望结果

1

为当前登录用户添加一个新的地址信息

添加成功,并且可以正确地显示

2

为当前登录用户添加一个已经存在的地址信息

显示“这个地址已经存在!”错误信息


2XML数据文件

在初始文件initInfo.xml中加入地址信息内容。

...
<!---  初始化收货地址信息 -->
         <case>
                  <addressid>0</addressid><!---  收货地址id -->
                  <address>上海市外滩一号</address><!--- 收货地址名称 -->
                  <phone>13688889999</phone><!---  联系电话 -->
                  <userid>0</userid><!---  用户id,与初始化用户id一致 -->
...


地址信息addressConfig.xml

<? xml version="1.0" encoding="UTF-8"?>
<node>
         <case>
                  <login>1</login>
         </case>
         <!--- 为当前登录用户添加一个新的地址信息,显示在用户信息中 -->
         <case>
                  <TestId>address-testcase001</TestId>
                  <Title>地址信息</Title>
                  <Method>post</Method>
                  <Desc>为当前登录用户添加一个新的地址信息</Desc><!--- 描述里面有"添加一个新的地址信息",执行操作后程序会把这条记录删除  -->
                  <Url>http://127.0.0.1:8000/add_address/1/</Url>
                  <InptArg>{"address":"上海市延安中路100号","phone":"13681166561"}</InptArg>
                  <Result>200</Result>
                  <CheckWord>延安中路</CheckWord><!--- 与参数中address保持一致 -->
         </case>
         <!--- 为当前登录用户添加一个已经存在的地址信息 -->
         <case>
                  <TestId>address-testcase002</TestId>
                  <Title>地址信息</Title>
                  <Method>post</Method>
                  <Desc>为当前登录用户添加一个已经存在的地址信息</Desc>
                  <Url>http://127.0.0.1:8000/add_address/1/</Url>
                  <InptArg>{"address":"上海市外滩一号","phone":"13681166561"}</InptArg><!---  参数中address与初始化地址名称信息保持一致  -->
                  <Result>200</Result>
                  <CheckWord>这个地址已经存在!</CheckWord>
         </case>
</node>


3)测试代码

建立测试代码addressTest.py,实现方法与前面类似。

#开始测试
def test_address_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(address,str(data.text))
      #否则调用断言方法assertIn()
      else:
            self.assertIn(mylist["CheckWord"],str(data.text))
      # 如果新建成功,删除刚建立的记录
      if "添加一个新的地址信息" in mylist["Desc"]:
      payload =  eval(mylist["InptArg"])
      address =  "\""+(str(payload["address"])).strip()+"\""
      self.dataBase.delete(self.addressTable,"address="+address)
      print  (mylist["TestId"]+" is passsing!")


        由于后面的测试程序存在页面中不存在信息的验证,所以保留if "NOT" in mylist["CheckWord"]语句的验证。另外如果是新建的记录,那么验证后立即把这条记录删除。


3.6.2 送货地址的修改


1urls.py

...
url(r'^update_address/(?P<address_id>[0-9]+)/(?P<sign>[0-9]+)/$',  views.update_address),
...


1address_id为修改地址的id

2)当sign=1 表示从用户信息进入添加送货地址页面。

3)当sign=2 表示从订单信息进入添加送货地址页面。


2views. py

...
# 修改地址信息
#sign=1 从用户信息进入
#sign=2 从订单信息进入
def update_address(request,address_id,sign):
    util = Util()
    username =  util.check_user(request)
    if  username=="":
        uf = LoginForm()
        return  render(request,"index.html",{'uf':uf,"error":"请登录后再进入"})
    else:
        #获取指定地址信息
        address_list =  get_object_or_404(Address, id=address_id)
        #获取当前登录用户的用户信息
        user_list =  get_object_or_404(User, username=username)
        #获取用户id
        id = user_list.id
        #如果是提交状态
        if request.method ==  "POST":
           #如果表单提交,准备获取表单信息
           uf =  AddressForm(request.POST)
           #表单信息验证
           if uf.is_valid():
              #如果数据准确,获取表单信息
              myaddress =  (request.POST.get("address", "")).strip()
              phone =  (request.POST.get("phone", "")).strip()
              #判断修改的地址信息这个用户是否是否存在
              check_address  = Address.objects.filter(address=myaddress,user_id = id)
              #如果不存在,将表单数据修改并存进数据库
              if not  check_address:
                    Address.objects.filter(id=address_id).update(address = myaddress,phone  = phone)
              #否则报“这个地址已经存在!”的错误提示信息
              else:
                   return  render(request,'update_address.html',{'uf':uf,'error':'这个地址已经存在!','address':address_list})
                #获得当前登录用户的所有地址信息
                address_list  = Address.objects.filter(user_id=user_list.id)
                #如果sign==2,返回订单信息页面
                if  sign=="2":
                   return  render(request, 'view_address.html', {"user": username,'addresses':  address_list}) #进入订单用户信息
                #否则进入用户信息页面
                else:
                    response  = HttpResponseRedirect('/user_info/') # 进入用户信息
                    return response
            #如果没有提交,显示修改地址页面
            else:
                return  render(request,'update_address.html',{'address':address_list})...


1)登录用户通过语句address_list= get_object_or_404(Address, id=address_id)获取需要修改的地址信息。

2)通过语句user_list= get_object_or_404(User, username=username)获得登录用户信息以及语句id =user_list.id获得登录用户数据库id。如果当前不是表单提交状态,显示修改表单提交信息,否则在验证表单信息合法性后获取表单数据。

3)接下来验证地址信息是否在数据库中是否存在,确保不存在的前提下,通过语句Address.objects.filter(id=address_id).update(address =myaddress,phone = phone)将其修改内容更新到数据库中。

4)最后根据sign=1还是sign=2返回页面view_address.html或者方法user_info


3.模板

update_address.html

{%load staticfiles%}
<? xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0  Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"  xml:lang="en">
<head>
    <meta  http-equiv="Content-Type" content="text/html;  charset=UTF-8" />
    <title>修改地址</title>
    <!-- Bootstrap core  CSS -->
    <link  href="{%static 'css/signin.css'%}" rel="stylesheet">
    <!-- Custom styles  for this template -->
    <link  href="{%static 'css/bootstrap.min.css'%}"  rel="stylesheet">
         <link  href="{%static 'css/my.css'%}" rel="stylesheet">
</head>
<body>
  <div>
    <form method="post"  enctype="multipart/form-data">
      <h2>修改地址</h2>
      <p><label  for="id_address">地址:</label><input  type="text"  value="{{address.address}}"  name="address" id="id_address" size="20"  maxlength="100" required /></p>
           <p><label  for="id_phone">电话:</label><input  type="text" value="{{address.phone}}"  name="phone" id="id_phone" size="20"  maxlength="15" required /></p>
                  <p  style="color:red">{{error}}</p><br>
      <button  class="btn btn-lg btn-primary btn-block"  type="submit">修改</button><br>
    </form>
  </div><!--  /container -->
</body>
</html>


由于在修改的时候需要显示以前的地址信息内容,所以不能使用AddressForm类,只能用HTML语言把form信息写出来,见图3-18

 

image.png

      3-18 修改收货地址


星云测试

http://www.teststars.cc

奇林软件

http://www.kylinpet.com

联合通测

http://www.quicktesting.net


顾翔凡言:

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

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