200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 【软件测试】使用selenium工具对Web聊天室项目进行UI自动化测试

【软件测试】使用selenium工具对Web聊天室项目进行UI自动化测试

时间:2018-10-15 14:39:41

相关推荐

【软件测试】使用selenium工具对Web聊天室项目进行UI自动化测试

文章目录

用户注册功能注册成功注册失败测试套件HTML测试报告异常截图 用户登陆注册功能登陆成功账号不存在,登陆失败密码错误,登陆失败测试套件HTML测试报告异常截图 本次自动化测试的源码地址

用户注册功能

在用户注册页面,用户输入用户名,密码,昵称,图像文件(可以不上传)即可完成注册,但是如果昵称或者用户名被注册过了,就会显示账号或昵称已经存在

使用数据驱动DDT让测试数据来驱动测试用例代码执行,使用测试套件把注册成功和注册失败的测试用例组织到一起进行一个整体的测试,对注册失败的测试用例进行错误捕捉并保存异常截图,最后通过HTMLTestRunner生成HTML测试报告

注册成功

注册成功的测试用例

[{"username": "12345","password": "12345","nickname": "孙悟空","head": "D:\\photo\\18.jpg"},{"username": "23456","password": "23456","nickname": "猪八戒","head": ""},{"username": "34567","password": "34567","nickname": "唐三藏","head": "D:\\photo\\18.jpg"},{"username": "45678","password": "45678","nickname": "沙和尚","head": "D:\\photo\\16.jpg"},{"username": "abcde","password": "abcde","nickname": "黑旋风","head": "D:\\photo\\18.jpg"},{"username": "bcdef","password": "bcdef","nickname": "豹子头","head": ""},{"username": "cdefg","password": "cdefg","nickname": "行者","head": "D:\\photo\\18.jpg"}]

注册成功的自动化测试脚本

from selenium import webdriverimport timeimport unittestfrom ddt import ddt, unpack, data, file_data@ddtclass RegisterTestOk(unittest.TestCase):# 测试固件def setUp(self):# 获取谷歌浏览器驱动self.driver = webdriver.Chrome()# Web聊天室链接self.url = "http://82.157.7.147:8080/chatroom/"# 浏览器最大化self.driver.maximize_window()time.sleep(3)def tearDown(self):# 关闭浏览器,清除缓存self.driver.quit()# 测试用例@file_data('./registerOkData.json') def test_RegisterOk(self, username, password, nickname, head):driver = self.driverurl = self.urldriver.get(url)# 点击注册driver.find_element_by_link_text("注册").click()# 智能等待driver.implicitly_wait(3) # 输入注册信息driver.find_element_by_xpath('//*[@id="app"]/form/div[1]/input').send_keys(username)driver.find_element_by_xpath('//*[@id="app"]/form/div[2]/input').send_keys(password)driver.find_element_by_xpath('//*[@id="app"]/form/div[3]/input').send_keys(nickname)driver.find_element_by_xpath('//*[@id="app"]/form/div[4]/input').send_keys(head)driver.find_element_by_xpath('//*[@id="app"]/form/div[6]/input').click()time.sleep(3)# 注册成功,关闭登陆成功弹窗driver.switch_to.alert.accept()time.sleep(3)if __name__ == '__main__':unittest.main()

注册失败

注册失败的测试用例

[{"username": "12345","password": "12345","nickname": "孙孙孙","head": "D:\\photo\\18.jpg"},{"username": "22222","password": "23456","nickname": "猪八戒","head": "D:\\photo\\16.jpg"},{"username": "34567","password": "34567","nickname": "唐唐唐","head": "D:\\photo\\18.jpg"},{"username": "45678","password": "45678","nickname": "沙沙沙","head": ""},{"username": "ccccc","password": "abcde","nickname": "黑旋风","head": "D:\\photo\\18.jpg"},{"username": "bcdef","password": "bcdef","nickname": "豹子子","head": ""},{"username": "eeeee","password": "cdefg","nickname": "行者","head": "D:\\photo\\16.jpg"}]

注册失败的自动化脚本

from selenium import webdriverimport timeimport unittestimport osfrom ddt import ddt, unpack, data, file_data@ddtclass RegisterTestFalse(unittest.TestCase):# 测试固件def setUp(self):self.driver = webdriver.Chrome()self.url = "http://82.157.7.147:8080/chatroom/"self.driver.maximize_window()time.sleep(3)def tearDown(self):self.driver.quit()# 保存异常截图def saveScreenAsPhoto(self, driver, file_name):if not os.path.exists("./image"):os.makedirs("./image")now = time.strftime("%Y%m%d-%H%M%S", time.localtime(time.time()))driver.get_screenshot_as_file("./image/"+now+"-"+file_name)time.sleep(2)# 测试用例@file_data('./registerFalseData.json')def test_RegisterFalse(self, username, password, nickname, head):driver = self.driverurl = self.urldriver.get(url)driver.find_element_by_link_text("注册").click()driver.implicitly_wait(3)driver.find_element_by_xpath('//*[@id="app"]/form/div[1]/input').send_keys(username)driver.find_element_by_xpath('//*[@id="app"]/form/div[2]/input').send_keys(password)driver.find_element_by_xpath('//*[@id="app"]/form/div[3]/input').send_keys(nickname)driver.find_element_by_xpath('//*[@id="app"]/form/div[4]/input').send_keys(head)driver.find_element_by_xpath('//*[@id="app"]/form/div[6]/input').click()time.sleep(3)errorMessage = driver.find_element_by_xpath('//*[@id="app"]/form/div[5]').text# 异常捕捉并保存错误截图try:self.assertFalse(errorMessage, msg="账号或密码已经存在")except:self.saveScreenAsPhoto(driver, 'false.png')time.sleep(3)if __name__ == '__main__':unittest.main()

测试套件

使用测试套件组织测试用例一起执行,并生成HTML测试报告

import HTMLTestRunnerimport osimport sysimport timeimport unittestfrom register_test import register_okfrom register_test import register_falsedef createSuite():suit1 = unittest.TestLoader().loadTestsFromTestCase(register_ok.RegisterTestOk)suit2 = unittest.TestLoader().loadTestsFromTestCase(register_false.RegisterTestFalse)suit = unittest.TestSuite([suit1, suit2])return suitif __name__ == '__main__':curpath = sys.path[0]if not os.path.exists(curpath + '/registerReport'):os.makedirs(curpath + '/registerReport')now = time.strftime("%Y-%m-%d-%H %M %S", time.localtime(time.time()))fileName = curpath + '/registerReport/' + now + 'registerReport.html'with open(fileName, 'wb') as fp:runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u"测试报告", description=u"用例执行情况", verbosity=2)suit = createSuite()runner.run(suit)

HTML测试报告

因为对异常进行捕捉,并保存错误截图,所以注册失败的测试用例也是测试成功的

异常截图

用户登陆注册功能

在用户登陆页面,用户输入用户名,密码即可完成登陆,但是如果输入的用户名无效就会提示账号不存在,如果用户名正确但是密码输入错误就会提示密码错误

使用数据驱动DDT让测试数据来驱动测试用例代码执行,使用测试套件把登陆成功和登陆失败的测试用例组织到一起进行一个整体的测试,对登陆失败的测试用例进行错误捕捉并保存异常截图,最后通过HTMLTestRunner生成HTML测试报告

登陆成功

登陆成功测试用例

[{"username": "abc","password": "123"},{"username": "12345","password": "12345"},{"username": "23456","password": "23456"},{"username": "34567","password": "34567"},{"username": "abcde","password": "abcde"}]

登陆成功自动化测试脚本

from selenium import webdriverimport timeimport unittestfrom ddt import ddt, unpack, data, file_data@ddtclass LoginTestOk(unittest.TestCase):def setUp(self):# 获取谷歌浏览器驱动self.driver = webdriver.Chrome()# Web聊天室链接self.url = "http://82.157.7.147:8080/chatroom/"# 浏览器最大化self.driver.maximize_window()time.sleep(3)def tearDown(self):# 关闭浏览器,清除缓存self.driver.quit()@file_data('./loginOkData.json')def test_LoginOk(self, username, password):driver = self.driverurl = self.urldriver.get(url)time.sleep(3)driver.find_element_by_xpath('//*[@id="app"]/form/div[1]/input').send_keys(username)driver.find_element_by_xpath('//*[@id="app"]/form/div[2]/input').send_keys(password)driver.find_element_by_xpath('//*[@id="app"]/form/div[4]/input').click()time.sleep(3)driver.switch_to.alert.accept()time.sleep(3)if __name__ == '__main__':unittest.main()

账号不存在,登陆失败

账号不存在,登陆失败的测试用例

[{"username": "aaa","password": "123"},{"username": "bbbbb","password": "12345"},{"username": "65436","password": "23456"},{"username": "daa32","password": "34567"},{"username": "dd225","password": "abcde"}]

账号不存在,登陆失败的自动化测试脚本

import osimport timeimport unittestfrom ddt import ddt, file_datafrom selenium import webdriver@ddtclass LoginTestFalseNone(unittest.TestCase):def setUp(self):# 获取谷歌浏览器驱动self.driver = webdriver.Chrome()# Web聊天室链接self.url = "http://82.157.7.147:8080/chatroom/"# 浏览器最大化self.driver.maximize_window()time.sleep(3)def tearDown(self):# 关闭浏览器,清除缓存self.driver.quit()# 保存异常截图def saveScreenAsPhoto(self, driver, file_name):if not os.path.exists("./image"):os.makedirs("./image")now = time.strftime("%Y%m%d-%H%M%S", time.localtime(time.time()))driver.get_screenshot_as_file("./image/" + now + "-" + file_name)time.sleep(2)@file_data('./loginFalseNone.json')def test_LoginOk(self, username, password):driver = self.driverurl = self.urldriver.get(url)time.sleep(3)# 输入登陆信息,点击登陆driver.find_element_by_xpath('//*[@id="app"]/form/div[1]/input').send_keys(username)driver.find_element_by_xpath('//*[@id="app"]/form/div[2]/input').send_keys(password)driver.find_element_by_xpath('//*[@id="app"]/form/div[4]/input').click()time.sleep(3)errorMessage = driver.find_element_by_xpath('//*[@id="app"]/form/div[3]').texttry:self.assertFalse(errorMessage, msg="账号不存在")except:self.saveScreenAsPhoto(driver, 'false-none.png')time.sleep(3)if __name__ == '__main__':unittest.main()

密码错误,登陆失败

密码错误,登陆失败的测试用例

[{"username": "abc","password": "12345"},{"username": "12345","password": "23456"},{"username": "23456","password": "34567"},{"username": "34567","password": "45678"},{"username": "abcde","password": "abcdef"}]

密码错误,登陆失败的自动化测试脚本

import osimport timeimport unittestfrom ddt import ddt, file_datafrom selenium import webdriver@ddtclass LoginTestFalseError(unittest.TestCase):def setUp(self):# 获取谷歌浏览器驱动self.driver = webdriver.Chrome()# Web聊天室链接self.url = "http://82.157.7.147:8080/chatroom/"# 浏览器最大化self.driver.maximize_window()time.sleep(3)def tearDown(self):# 关闭浏览器,清除缓存self.driver.quit()# 保存异常时截图def saveScreenAsPhoto(self, driver, file_name):if not os.path.exists("./image"):os.makedirs("./image")now = time.strftime("%Y%m%d-%H%M%S", time.localtime(time.time()))driver.get_screenshot_as_file("./image/" + now + "-" + file_name)time.sleep(2)@file_data('./loginFalseError.json')def test_LoginOk(self, username, password):driver = self.driverurl = self.urldriver.get(url)time.sleep(3)# 输入登陆信息,点击登陆driver.find_element_by_xpath('//*[@id="app"]/form/div[1]/input').send_keys(username)driver.find_element_by_xpath('//*[@id="app"]/form/div[2]/input').send_keys(password)driver.find_element_by_xpath('//*[@id="app"]/form/div[4]/input').click()time.sleep(3)errorMessage = driver.find_element_by_xpath('//*[@id="app"]/form/div[3]').texttry:self.assertFalse(errorMessage, msg="密码错误")except:self.saveScreenAsPhoto(driver, 'false-error.png')time.sleep(3)if __name__ == '__main__':unittest.main()

测试套件

使用测试套件组织测试用例一起执行,并生成HTML测试报告

from login_test import login_false_nonefrom login_test import login_false_errordef createSuite():# 登陆成功的测试脚本suit1 = unittest.TestLoader().loadTestsFromTestCase(login_ok.LoginTestOk)# 账号不存在的测试脚本suit2 = unittest.TestLoader().loadTestsFromTestCase(login_false_none.LoginTestFalseNone)# 密码错误的测试脚本suit3 = unittest.TestLoader().loadTestsFromTestCase(login_false_error.LoginTestFalseError)suit = unittest.TestSuite([suit1, suit2, suit3])return suitif __name__ == '__main__':curpath = sys.path[0]if not os.path.exists(curpath + '/loginReport'):os.makedirs(curpath + '/loginReport')now = time.strftime("%Y-%m-%d-%H %M %S", time.localtime(time.time()))fileName = curpath + '/loginReport/' + now + 'loginReport.html'with open(fileName, 'wb') as fp:runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u"测试报告", description=u"用例执行情况", verbosity=2)suit = createSuite()runner.run(suit)

HTML测试报告

因为对异常进行捕捉,并保存错误截图,所以登陆失败的测试用例也是测试成功的

异常截图

账号不存在,捕捉保存的异常图片

密码错误,捕捉保存的异常图片

本次自动化测试的源码地址

Web聊天室自动化测试源码

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。