这样测试程序的主体部分就变得非常简单了,代码如下。
#开始测试 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
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有