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

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

作者头像
顾翔
发布2019-12-11 15:30:04
3520
发布2019-12-11 15:30:04
举报

这样测试程序的主体部分就变得非常简单了,代码如下。

#开始测试 def test_user_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)) #验证返回文本 self.assertIn(mylist["CheckWord"],str(data.text)) print (mylist["TestId"]+" is passsing!")

(1)通过循环语句formylist in self.mylists:遍历所有测试用例。

(2) 调用上面提及的run_test方法data = self.util.run_test(mylist,self.userValues,self.sign)。

(3)通过语句self.assertEqual(mylist["Result"],str(data.status_code))判断返回码是否正确

(4)通过语句self.assertIn(mylist["CheckWord"],str(data.text))验证文本是否在返回文本中。

(5)最后通过语句print(mylist["TestId"]+" is passsing!")打上这个测试用例通过的标记。

tearDown()方法定义如下。

def tearDown(self): #获取初始化数据库中的记录主码 id = self.userValues.split(',')[0] #删除这条记录 self.dataBase.delete(self.userTable,"id="+id) #关闭数据库连接 self.dataBase.close() print("--------测试结束--------")

封装这个方法,在interface/util.py中的util类中定义一个方法tearDown()。

def tearDown(dataBase,table,values,sign): #获取初始化数据库中的记录主码 id = values.split(',')[0] #删除这条记录 dataBase.delete(table,"id="+id) #关闭数据库连接 dataBase.close()

这样在userTest.py中使用起来就非常简单了。

def tearDown(self): Util.tearDown(self.dataBase,self.userTable, self.userValues,self.sign) print("--------测试结束--------")

在这里把用户注册与用户登录也改造,并且加上注释信息,在这里就不进行过多介绍了。

登录配置文件loginConfig.xml。

<?xml version="1.0" encoding="UTF-8"?><node> <!--- 登录操作,正确用户名,错误密码 --> <case> <TestId>loginReg-testcase001</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-testcase002</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-testcase003</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-testcase004</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。

#!/usr/bin/env python#coding:utf-8import unittest,requestsfrom util import GetXML,DB,Util class mylogin(unittest.TestCase): def setUp(self): print("--------测试开始--------") xmlfile = "loginConfig.xml" #建立GetXML对象变量 xmlInfo = GetXML() #获得是否需要登录的信息 self.sign = xmlInfo.getIsLogin(xmlfile) #获得所有测试数据 self.mylists = xmlInfo.getxmldata(xmlfile) #定义数据库表名 self.userTable = "goods_user" #获得初始化信息 self.userValues = xmlInfo.getUserInitInfo() #建立DB对象变量 self.dataBase = DB() Util.insertTable(self.dataBase,self.userTable, self.userValues) def test_login(self): for mylist in self.mylists: data = Util.run_test(mylist, self.userValues,self.sign) #验证返回码 self.assertEqual(mylist["Result"],str(data.status_code)) #验证返回文本 self.assertIn(mylist["CheckWord"],str(data.text)) def tearDown(self): Util.tearDown(self.dataBase,self.userTable, self.userValues,self.sign) print("--------测试结束--------") if __name__=='__main__': #构造测试集 suite=unittest.TestSuite() suite.addTest(mylogin("test_login")) #运行测试集合 runner=unittest.TextTestRunner() runner.run(suite)

注册配置文件registerConfig.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></node>

注册测试代码registerTest.py。

#!/usr/bin/env python#coding:utf-8import unittest,requestsfrom util import GetXML,DB,Util class myregister(unittest.TestCase): def setUp(self): print("--------测试开始--------") xmlfile = "registerConfig.xml" #建立GetXML对象变量 xmlInfo = GetXML() #获得是否需要登录的信息 self.sign = xmlInfo.getIsLogin(xmlfile) #获得所有测试数据 self.mylists = xmlInfo.getxmldata(xmlfile) #定义数据库表名 self.userTable = "goods_user" #获得初始化信息 self.userValues = xmlInfo.getUserInitInfo() #建立DB对象变量 self.dataBase = DB() Util.insertTable (self.dataBase,self.userTable, self.userValues) def test_register(self): for mylist in self.mylists: data = Util.run_test(mylist, self.userValues,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) def tearDown(self): Util.tearDown(self.dataBase,self.userTable,self.userValues,self.sign) print("--------测试结束--------") if __name__=='__main__': #构造测试集 suite=unittest.TestSuite() suite.addTest(myregister("test_register")) #运行测试集合 runner=unittest.TextTestRunner() runner.run(suite)

星云测试

http://www.teststars.cc

奇林软件

http://www.kylinpet.com

联合通测

http://www.quicktesting.net

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

本文分享自 软件测试培训 微信公众号,前往查看

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

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

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