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

简介: 顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript,主文件是:zentao.py 。bugreport是禅道,script是python3+selenium 3,按照规则在禅道上书写的bugreport可由zentao.py程序生成py测试脚本。

3. 模板


{% extends "base.html" %}
{% block content %}
          </ul>
          <ul  class="nav navbar-nav navbar-right">
           <li><a  href="/user_info/">{{user}}</a></li>
           <li><a  href="/logout/">退出</a></li>
         </ul>
         </div><!--/.nav-collapse -->
      </div>
    </nav>
    <div  class="container theme-showcase" role="main">
           <div>
        <div  id="navbar" class="navbar-collapse collapse">
         </div><!--/.navbar-collapse -->
      </div>
           <p>生成时间:{{orders.create_time}} 配货地址:{{address}}总价钱:¥{{prices}}</p>
           <div>
        <div>
          <table  class="table table-striped">
            <thead>
              <tr>
                <th>编号</th>
                                     <th>商品名称</th>
                                     <th>商品价钱</th>
                                     <th>个数</th>
                                     <th>删除</th>
              </tr>
            </thead>
            <tbody>
              {% for key in order %}
                <tr>
                   <td><a href="/view_goods/{{key.good_id}}/">{{ key.id }}</a></td>
                  <td>{{ key.name }}</td>
                  <td>¥{{ key.price }}</td>
                                       <td>{{ key.count }}</td>
                                       <td><a href="/delete_orders/{{key.id}}/3/">删除</a></td>
                </tr>
             {% endfor %}
            </tbody>
          </table>
                  <input  type="submit" value="支付">
        </div>
      </div>
{% endblock %}


        总订单信息通过<p>生成时间:{{orders.create_time}} 配货地址:{{address}} 总价钱:¥{{prices}}</p>显示订单信息,通过{%for key in order %}遍历显示。如图3-19所示。

 

  image.png                  

3-19 显示当前生成的订单


4. 接口测试


1)测试用例

3-15为生成订单的测试用例,这个订单仅包含一个订单。测试程序通过初始化一个订单数据和对应的总订单数据,形成一个订单和对应的总订单,验证是否可以正确地被显示出来。


3-15 生成一个订单的测试用例

编号

描述

期望结果

1

生成并且显示当前用户的一个订单

生成并且正确地被显示


2XML数据文件

首先在initInfo.xml建立订单信息。

<!--- 初始化总订单信息 -->
         <case>
                  <ordersid>0</ordersid><!---  总订单id -->
                  <createtime>Sept.  8, 2017, 6:29 a.m.</createtime><!--- 总订单产生日期 -->
                  <status>1</status><!---  这里必须设置为1,表示已支付,与测试代码区别 -->
                  <ordersaddressid>0</ordersaddressid><!---  地址id,与初始化地址id保持一致 -->
         </case>
<!--- 初始化单个订单信息 -->
         <case>
                  <orderid>0</orderid><!---  单个订单id -->
                  <count>9999</count><!---  单个订单数量,这里必填9999 ,与测试代码区别-->
                  <ordergoodid>0</ordergoodid><!---  商品id,与初始化商品id保持一致 -->
                  <orderorderid>0</orderorderid><!---  总订单id,与初始化总订单id保持一致 -->
                  <orderuserid>0</orderuserid><!---  用户id,与初始化用户id保持一致 -->
         </case>
</node>


由于在这里要使用到cookie,所以在测试程序开始要通过程序代码来向购物车中添加一个商品。这里的测试用例与购物车的测试用例第一条是一样的。建立测试配置文件orderConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<node>
         <case>
                  <login>1</login>
         </case>
         <!--- 添加进购物车,查看显示购物车内商品数量的变化 -->
         <case>
                  <TestId>order-testcase001</TestId>
                  <Title>购物车</Title>
                  <Method>get</Method>
                  <Desc>添加进购物车</Desc>
                  <Url>http://127.0.0.1:8000/add_chart/0/1/</Url>
                  <InptArg></InptArg>
                  <Result>200</Result>
                  <CheckWord>查看购物车&lt;font  color=&quot;#FF0000&quot;&gt;1&lt;/font&gt;&lt;/a&gt;</CheckWord><!---  显示添加成功 -->
         </case>
         <!--- 生成并且显示当前用户的一个订单 -->
         <case>
                  <TestId>order-testcase002</TestId>
                  <Title>订单信息</Title>
                  <Method>post</Method>
                  <Desc>生成并且显示当前用户的一个订单</Desc>
                  <Url>http://127.0.0.1:8000/create_order/</Url>
                  <InptArg>{"address":"0"}</InptArg>
                  <Result>200</Result>
                  <CheckWord>1234.56</CheckWord><!---  检查单个订单中的价格信息是否正确显示,order-testcase002必须为建立订单 -->
         </case>


3)测试代码

orderTest.py

#!/usr/bin/env python
#coding:utf-8
import unittest,requests
from util import GetXML,DB,Util
class orderTest(unittest.TestCase):
    def setUp(self):
       print("--------测试开始--------")
       xmlfile =  "orderConfig.xml"
       #建立GetXML对象变量
       xmlInfo = GetXML()
       #获得是否需要登录的信息
       self.sign =  xmlInfo.getIsLogin(xmlfile)
       #获得所有测试数据
       self.mylists =  xmlInfo.getxmldata(xmlfile)
       #建立DB变量
       self.dataBase = DB()
       #建立util变量
       self.util =Util()
       #初始化用户记录
       self.userTable =  "goods_user"
       self.userValues =  self.util.inivalue(self.dataBase,self.userTable,"0")
       #初始化商品记录
       self.goodTable =  "goods_goods"
       self.goodValues = self.util.inivalue(self.dataBase,self.goodTable,"1")
       #初始化地址记录
       self.addressTable =  "goods_address"
       self.addressValues =  self.util.inivalue(self.dataBase,self.addressTable,"2")
       #初始化总订单记录
       self.ordersTable =  "goods_orders"
       self.ordersValues =  self.util.inivalue(self.dataBase,self.ordersTable,"3")
       #初始化订单记录
       self.orderTable =  "goods_order"
       self.orderValues =  self.util.inivalue(self.dataBase,self.orderTable,"4")
    #开始测试
    def  test_order_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))
               #建立单独订单记录
self.util.insertTable(self.dataBase,self.ordersTable,self.ordersValues)
               #建立总订单记录
self.util.insertTable(self.dataBase,self.orderTable,self.orderValues)
                #否则调用断言方法assertIn()
                else:
                     self.assertIn(mylist["CheckWord"],str(data.text))
                #如果是验证查看全部订单,测试完毕把测试数据删除
if "view_all_order" in mylist["Url"]:
                      self.dataBase.delete(self.ordersTable,"status='0'")
                      self.dataBase.delete(self.orderTable,"count=1")
                print  (mylist["TestId"]+" is passsing!")
    def tearDown(self):
          #删除setup建立的单个订单
           self.util.tearDown(self.dataBase,self.orderTable,self.orderValues)
          #删除setup建立的总订单
           self.util.tearDown(self.dataBase,self.ordersTable,self.ordersValues)
          #删除setup建立的地址
          self.util.tearDown(self.dataBase,self.addressTable,self.addressValues)
          #删除setup建立的商品
           self.util.tearDown(self.dataBase,self.goodTable,self.goodValues)
          #删除setup建立的用户
           self.util.tearDown(self.dataBase,self.userTable,self.userValues)
          #关闭数据库连接
           self.dataBase.close()
           print("--------测试结束--------")
if __name__=='__main__':
        #构造测试集
         suite=unittest.TestSuite()
         suite.addTest(orderTest("test_order_info"))
        #运行测试集合
        runner=unittest.TextTestRunner()
        runner.run(suite)


        由于在这里用户、商品、收货地址、单个订单和总订单信息都要用到,所以在Setup()方法中都要进行初始化。由于测试用例order-testcase003必须要用到order-testcase002建立的测试记录,所以在order-testcase003后删除order-testcase002建立的测试数据。(读者也可以考虑如何将这两个测试用例分开,使得互相独立。)


星云测试

http://www.teststars.cc

奇林软件

http://www.kylinpet.com

联合通测

http://www.quicktesting.net


顾翔凡言:

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

目录
相关文章
|
3月前
|
前端开发 搜索推荐 算法
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
中草药管理与推荐系统。本系统使用Python作为主要开发语言,前端使用HTML,CSS,BootStrap等技术和框架搭建前端界面,后端使用Django框架处理应用请求,使用Ajax等技术实现前后端的数据通信。实现了一个综合性的中草药管理与推荐平台。具体功能如下: - 系统分为普通用户和管理员两个角色 - 普通用户可以登录,注册、查看物品信息、收藏物品、发布评论、编辑个人信息、柱状图饼状图可视化物品信息、并依据用户注册时选择的标签进行推荐 和 根据用户对物品的评分 使用协同过滤推荐算法进行推荐 - 管理员可以在后台对用户和物品信息进行管理编辑
93 12
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
|
7月前
|
搜索推荐 算法 前端开发
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
202 4
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
|
安全 测试技术 Python
基于Django的电子商务网站开发(连载39)
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript, 主文件是:zentao.py 。bugreport是禅道,script是python3+selenium 3,按照规则在禅道上书写的bugreport可由zentao.py程序生成py测试脚本。
75 0
基于Django的电子商务网站开发(连载39)
|
存储 安全 前端开发
基于Django的电子商务网站开发(连载37)
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript, 主文件是:zentao.py 。bugreport是禅道,script是python3+selenium 3,按照规则在禅道上书写的bugreport可由zentao.py程序生成py测试脚本。
153 0
基于Django的电子商务网站开发(连载37)
|
测试技术 Python
基于Django的电子商务网站开发(连载36)
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript, 主文件是:zentao.py 。bugreport是禅道,script是python3+selenium 3,按照规则在禅道上书写的bugreport可由zentao.py程序生成py测试脚本。
96 0
基于Django的电子商务网站开发(连载36)
|
XML 测试技术 数据库
基于Django的电子商务网站开发(连载34)
基于Django的电子商务网站开发(连载34)
66 0
基于Django的电子商务网站开发(连载34)
|
SQL XML 前端开发
基于Django的电子商务网站开发(连载40)
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript, 主文件是:zentao.py 。bugreport是禅道,script是python3+selenium 3,按照规则在禅道上书写的bugreport可由zentao.py程序生成py测试脚本。
184 0
|
测试技术 Python
基于Django的电子商务网站开发(连载38)
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript, 主文件是:zentao.py 。bugreport是禅道,script是python3+selenium 3,按照规则在禅道上书写的bugreport可由zentao.py程序生成py测试脚本。
92 0
|
XML 测试技术 数据格式
基于Django的电子商务网站开发(连载35)
基于Django的电子商务网站开发(连载35)
106 0
|
1月前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
171 45