前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于Django的电子商务网站开发(连载17)

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

作者头像
顾翔
发布2019-12-11 15:40:58
3700
发布2019-12-11 15:40:58
举报
文章被收录于专栏:啄木鸟软件测试

接下来再对测试程序以及配置文件进行优化,把loginConfig.xml和registerConfig.xml这两个文件进行合并,形成loginRegConfig.xml。

<? xml version="1.0" encoding="UTF-8"?><node> <case> <login>0</login><!--- 0表示执行不需要登录、1表示需要登录 --> </case> <!--- 注册的时候,用户名已经存在 --> <case> <TestId>loginReg-testcase001</TestId> <Title>用户注册</Title> <Method>post</Method> <Desc>注册的时候,用户名已经存在</Desc> <Url>http://127.0.0.1:8000/register/</Url> <InptArg>{"username":"Johnson","password":"000000","email":"Johnson5@126.com"}</InptArg><!--- 用户名同initInfo.xml中用户信息 --> <Result>200</Result> <CheckWord>用户名已经存在!</CheckWord> </case> <!--- 注册成功 --> <case> <TestId>loginReg-testcase002</TestId> <Title>用户注册</Title> <Method>post</Method> <Desc>注册用户名不存在</Desc><!--- 通过“注册用户名不存在”测试完毕删除数据库记录 --> <Url>http://127.0.0.1:8000/register/</Url> <InptArg>{"username":"smith","password":"000000","email":"smith@126.com"}</InptArg><!--- 用户名不同于initInfo.xml中用户信息 --> <Result>200</Result> <CheckWord>登录</CheckWord> </case> <!--- 登录操作,正确用户名,错误密码 --> <case> <TestId>loginReg-testcase003</TestId> <Title>用户登录</Title> <Method>post</Method> <Desc>正确用户名,错误密码</Desc> <Url>http://127.0.0.1:8000/login_action/</Url> <InptArg>{"username":"Johnson","password":"123456"}</InptArg><!--- 密码不同于initInfo.xml中用户信息 --> <Result>200</Result> <CheckWord>用户名或者密码错误</CheckWord> </case> <!--- 登录操作,错误用户名,正确密码 --> <case> <TestId>loginReg-testcase004</TestId> <Title>用户登录</Title> <Method>post</Method> <Desc>错误用户名,正确密码</Desc> <Url>http://127.0.0.1:8000/login_action/</Url> <InptArg>{"username":"smith","password":"000000"}</InptArg><!--- 用户名不同于initInfo.xml中用户信息 --> <Result>200</Result> <CheckWord>用户名或者密码错误</CheckWord> </case> <!--- 登录操作,错误用户名,错误密码 --> <case> <TestId>loginReg-testcase005</TestId> <Title>用户登录</Title> <Method>post</Method> <Desc>错误用户名,错误密码</Desc> <Url>http://127.0.0.1:8000/login_action/</Url> <InptArg>{"username":"smith","password":"123456"}</InptArg><!--- 用户名、密码均不同于initInfo.xml中用户信息 --> <Result>200</Result> <CheckWord>用户名或者密码错误</CheckWord> </case> <!--- 登录操作成功 --> <case> <TestId>loginReg-testcase006</TestId> <Title>用户登录</Title> <Method>post</Method> <Desc>正确用户名,正确密码</Desc> <Url>http://127.0.0.1:8000/login_action/</Url> <InptArg>{"username":"Johnson","password":"000000"}</InptArg><!--- 用户名、密码均同于initInfo.xml中用户信息 --> <Result>200</Result> <CheckWord>查看购物车</CheckWord> </case></node>

然后合并loginTest.py和registerTest.py,形成loginRegTest.py。

#!/usr/bin/env python#coding:utf-8import unittest,requestsfrom util import GetXML,DB,Util class loginreg(unittest.TestCase): def setUp(self): print("--------测试开始--------") xmlfile = "loginRegConfig.xml" #建立GetXML对象变量 xmlInfo = GetXML() #获得是否需要登录的信息 self.sign = xmlInfo.getIsLogin(xmlfile) #获得所有测试数据 self.mylists = xmlInfo.getxmldata(xmlfile) #定义数据库表名 self.userTable = "goods_user" #获得初始化信息 self.values = xmlInfo.getUserInitInfo() #建立DB对象变量 self.dataBase = DB() Util.insertTable(self.dataBase,self.userTable,self.values) def test_register(self): for mylist in self.mylists: data = Util.run_test(mylist,self.values,self.sign) #验证返回码 self.assertEqual(mylist["Result"],str(data.status_code)) #验证返回文本 self.assertIn(mylist["CheckWord"],str(data.text)) # 如果注册成功,删除刚建立的记录 if "注册用户名不存在" in mylist["Desc"]: payload = eval(mylist["InptArg"]) username = "\""+payload["username"]+"\"" self.dataBase.delete(self.userTable,"username="+username) print (mylist["TestId"]+" is passsing!") def tearDown(self): Util.tearDown(self.dataBase,self.userTable,self.values) print("--------测试结束--------") if __name__=='__main__': #构造测试集 suite=unittest.TestSuite() suite.addTest(myregister("test_register")) #运行测试集合 runner=unittest.TextTestRunner() runner.run(suite)

在这里加上这三行代码。

if "注册用户名不存在" in mylist["Desc"]: payload = eval(mylist["InptArg"]) username = "\""+payload["username"]+"\""self.dataBase.delete(self.userTable,"username="+username)

这个在处理注册成功以后是需要删除建立起来的记录,其目的是保证每个测试程序间的互相独立性。

刚才在interface/util.py中封装了下tearDown(),现在来封装setUp()。在Util类里面建立一个inivalue()方法。

#初始化信息 def inivalue(self,dataBase,ordertable,sign): #获得初始化信息 if sign == "0": values = GetXML.getUserInitInfo(self) elif sign == "1": values = GetXML.getGoodInitInfo(self) elif sign == "2": values = GetXML.getAddressInitInfo(self) elif sign == "3": values = GetXML.getOrdersInitInfo(self) elif sign == "4": values = GetXML.getOrderInitInfo(self) else: print("sign is error in function inivalue") #建立记录 self.insertTable(dataBase,ordertable,values) return values

考虑到下面模块的使用,把用户、商品、收货地址、单个订单和总订单的初始化均写在这里了。

这样loginRegTest.py改造成。

#!/usr/bin/env python#coding:utf-8import unittest,requestsfrom util import GetXML,DB,Util class myregister(unittest.TestCase): def setUp(self): print("--------测试开始--------") xmlfile = "loginRegConfig.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") ...

而userTest.py改造成。

#!/usr/bin/env python#coding:utf-8import unittest,requestsfrom util import GetXML,DB,Util class userTest(unittest.TestCase): def setUp(self): print("--------测试开始--------") xmlfile = "userInfoConfig.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")...

可以看出以后的接口测试代码可以变得非常的简单,这样接口测试工作主要在于设计测试用例和书写XML文件(即设计测试数据),而不是维护测试代码了,因为大部分代码已经被封装了。最后建立一个runtest.py文件,内容如下。

#!/usr/bin/env python#coding:utf-8import unittestfrom HTMLTestRunner import HTMLTestRunner test_dir='./'discover=unittest.defaultTestLoader.discover(test_dir,pattern="*Test.py") if __name__=='__main__': runner=unittest.TextTestRunner() #以下用于生成测试报告 fp=open("result.html","wb") runner =HTMLTestRunner(stream=fp,title='测试报告',description='测试用例执行报告') runner.run(discover) fp.close()

运行这个测试代码,形成测试报告,如图3-5所示。

图3-5 测试报告

以后测试代码均以Test.py结尾,就可以使用这个TestSuite文件了。

星云测试

http://www.teststars.cc

奇林软件

http://www.kylinpet.com

联合通测

http://www.quicktesting.net

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档