【测试开发】博客系统——利用selenium的unittest框架进行基本功能测试并生成HTML报告

简介: 编写基本功能测试用例脚本(包含测试固件)利用unittest框架的测试套件进行功能测试生成HTML测试报告

22.png


编写基本功能测试用例脚本(包含测试固件)


登陆模块


import time
from selenium import webdriver
import unittest
class Login(unittest.TestCase):
    # Test继承自unittest.TestCase
    # 测试固件 setup和tearDown
    # 这里的self相当于是一个实例
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.url = "http://127.0.0.1:8080/BlogSystem/blog_login.html"
        self.driver.maximize_window()
    def tearDown(self):
        self.driver.quit()
    # 测试方法名必须要test_不然不执行
    def test_login(self):
        driver = self.driver
        driver.get(self.url)
        driver.implicitly_wait(5)
        driver.find_element_by_id("username").send_keys("zhangsan")
        driver.find_element_by_id("password").send_keys("123")
        driver.find_element_by_id("submit").click()
        time.sleep(3)
        self.assertEqual("zhangsan", driver.find_element_by_xpath("/html/body/div[2]/div[1]/div/h3").text,msg="登陆失败")
    if __name__ == "__main__":
        unittest.main(2)
'''
可以增加verbosity参数,例如unittest.main(verbosity=2)
在主函数中,直接调用main() ,在main中加入verbosity=2 ,这样测试的结果就会显示的更加详细。
这里的verbosity 是一个选项, 表示测试结果的信息复杂度,有三个值:
0 ( 静默模式): 你只能获得总的测试用例数和总的结果比如总共100个失败,20 成功80
1 ( 默认模式): 非常类似静默模式只是在每个成功的用例前面有个“ . ” 每个失败的用例前面有个“F”
2 ( 详细模式): 测试结果会显示每个测试用例的所有相关的信息
'''


发布博客模块


import time
from selenium import webdriver
import unittest
class Edit(unittest.TestCase):
    # Test继承自unittest.TestCase
    # 测试固件 setup和tearDown
    # 这里的self相当于是一个实例
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.url = "http://127.0.0.1:8080/BlogSystem/blog_login.html"
        self.driver.maximize_window()
    def tearDown(self):
        self.driver.quit()
    # 测试方法名必须要test_不然不执行
    def test_edit(self):
        driver = self.driver
        driver.get(self.url)
        driver.implicitly_wait(5)
        driver.find_element_by_id("username").send_keys("zhangsan")
        driver.find_element_by_id("password").send_keys("123")
        driver.find_element_by_id("submit").click()
        time.sleep(3)
        driver.find_element_by_xpath("/html/body/div[1]/a[2]").click()
        driver.find_element_by_id("title").send_keys("自动测试")
        time.sleep(3)
        driver.find_element_by_id("submit").click()
        time.sleep(3)
        self.assertEqual("自动测试", driver.find_element_by_xpath("/html/body/div[2]/div[2]/div[1]/div[1]").text)
    if __name__ == "__main__":
        unittest.main(2)
'''
可以增加verbosity参数,例如unittest.main(verbosity=2)
在主函数中,直接调用main() ,在main中加入verbosity=2 ,这样测试的结果就会显示的更加详细。
这里的verbosity 是一个选项, 表示测试结果的信息复杂度,有三个值:
0 ( 静默模式): 你只能获得总的测试用例数和总的结果比如总共100个失败,20 成功80
1 ( 默认模式): 非常类似静默模式只是在每个成功的用例前面有个“ . ” 每个失败的用例前面有个“F”
2 ( 详细模式): 测试结果会显示每个测试用例的所有相关的信息
'''


除博客模块


import time
from selenium import webdriver
import unittest
class Delete(unittest.TestCase):
    # Test继承自unittest.TestCase
    # 测试固件 setup和tearDown
    # 这里的self相当于是一个实例
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.url = "http://127.0.0.1:8080/BlogSystem/blog_login.html"
        self.driver.maximize_window()
    def tearDown(self):
        self.driver.quit()
    # 测试方法名必须要test_不然不执行
    def test_delete(self):
        driver = self.driver
        driver.get(self.url)
        driver.implicitly_wait(5)
        driver.find_element_by_id("username").send_keys("zhangsan")
        driver.find_element_by_id("password").send_keys("123")
        driver.find_element_by_id("submit").click()
        time.sleep(3)
        driver.find_element_by_xpath("/html/body/div[1]/a[2]").click()
        driver.find_element_by_id("title").send_keys("自动测试")
        time.sleep(3)
        driver.find_element_by_id("submit").click()
        time.sleep(3)
        driver.find_element_by_xpath("/html/body/div[2]/div[2]/div[1]/a").click()
        time.sleep(3)
        driver.find_element_by_xpath("/html/body/div[1]/a[4]").click()
        time.sleep(3)
        self.assertNotEqual("自动测试", driver.find_element_by_xpath("/html/body/div[2]/div[2]/div[1]/div[1]").text)
    if __name__ == "__main__":
        unittest.main(2)
'''
可以增加verbosity参数,例如unittest.main(verbosity=2)
在主函数中,直接调用main() ,在main中加入verbosity=2 ,这样测试的结果就会显示的更加详细。
这里的verbosity 是一个选项, 表示测试结果的信息复杂度,有三个值:
0 ( 静默模式): 你只能获得总的测试用例数和总的结果比如总共100个失败,20 成功80
1 ( 默认模式): 非常类似静默模式只是在每个成功的用例前面有个“ . ” 每个失败的用例前面有个“F”
2 ( 详细模式): 测试结果会显示每个测试用例的所有相关的信息
'''


注销模块


import time
from selenium import webdriver
import unittest
class Logout(unittest.TestCase):
    # Test继承自unittest.TestCase
    # 测试固件 setup和tearDown
    # 这里的self相当于是一个实例
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.url = "http://127.0.0.1:8080/BlogSystem/blog_login.html"
        self.driver.maximize_window()
    def tearDown(self):
        self.driver.quit()
    # 测试方法名必须要test_不然不执行
    def test_logout(self):
        driver = self.driver
        driver.get(self.url)
        driver.implicitly_wait(5)
        driver.find_element_by_id("username").send_keys("zhangsan")
        driver.find_element_by_id("password").send_keys("123")
        driver.find_element_by_id("submit").click()
        time.sleep(3)
        driver.find_element_by_xpath("/html/body/div[1]/a[3]").click()
        time.sleep(3)
        self.assertEqual("登录", driver.find_element_by_xpath("/html/body/div[2]/div/form/h3").text)
    if __name__ == "__main__":
        unittest.main(2)
'''
可以增加verbosity参数,例如unittest.main(verbosity=2)
在主函数中,直接调用main() ,在main中加入verbosity=2 ,这样测试的结果就会显示的更加详细。
这里的verbosity 是一个选项, 表示测试结果的信息复杂度,有三个值:
0 ( 静默模式): 你只能获得总的测试用例数和总的结果比如总共100个失败,20 成功80
1 ( 默认模式): 非常类似静默模式只是在每个成功的用例前面有个“ . ” 每个失败的用例前面有个“F”
2 ( 详细模式): 测试结果会显示每个测试用例的所有相关的信息
'''


利用unittest框架的测试套件进行功能测试


runall.py


import time
# 导入test_baidu1,test_baidu2
import test_login
import test_logout
import test_delete
import test_edit
import unittest
import HTMLTestRunner
import os,sys
# 手工添加案例到套件,
def createsuite():
     suite = unittest.TestSuite()
     # 将测试用例加入到测试容器(套件)中
     discover = unittest.defaultTestLoader.discover('../BlogSystem_test', pattern='test*.py', top_level_dir=None)
     print (discover)
     return discover
if __name__ == "__main__":
    curpath = sys.path[0]
    # 解决重复命名的问题
    now = time.strftime("%Y-%m-%d-%H %M %S", time.localtime(time.time()))
    # 当前路径下resulreport文件夹不存在的时候就创建一个
    if not os.path.exists(curpath + '/resultreport'):
        os.makedirs(curpath + '/resultreport')
    # 文件名是路径加上文件的名称
    # 准备HTML报告输出的文件
    filename = curpath + '/resultreport/' + now + 'resultreport.html'
    # 打开HTML文件,wb 以写的方式
    with open(filename, 'wb') as fp:
        # 出html报告,括号里的参数是HTML报告里的参数
        runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u'测试报告', description=u'用例执行情况',verbosity=2)
        suite = createsuite()
        runner.run(suite)


23.png


生成HTML测试报告



24.png


相关文章
|
3天前
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
24 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
4月前
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
226 5
|
2月前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
147 31
Selenium IDE:Web自动化测试的得力助手
|
24天前
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的大学生体质测试管理系统设计与实现(系统源码+文档+数据库+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
36 2
|
24天前
|
小程序 前端开发 关系型数据库
uniapp跨平台框架,陪玩系统并发性能测试,小程序源码搭建开发解析
多功能一体游戏陪练、语音陪玩系统的开发涉及前期准备、技术选型、系统设计与开发及测试优化。首先,通过目标用户分析和竞品分析明确功能需求,如注册登录、预约匹配、实时语音等。技术选型上,前端采用Uni-app支持多端开发,后端选用PHP框架确保稳定性能,数据库使用MySQL保证数据一致性。系统设计阶段注重UI/UX设计和前后端开发,集成WebSocket实现语音聊天。最后,通过功能、性能和用户体验测试,确保系统的稳定性和用户满意度。
|
2月前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
265 17
Selenium:强大的 Web 自动化测试工具
|
2月前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
88 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
1月前
|
消息中间件 监控 小程序
电竞陪玩系统架构优化设计,陪玩app如何提升系统稳定性,陪玩小程序平台的测试与监控
电竞陪玩系统架构涵盖前端(React/Vue)、后端(Spring Boot/php)、数据库(MySQL/MongoDB)、实时通信(WebSocket)及其他组件(Redis、RabbitMQ、Nginx)。通过模块化设计、微服务架构和云计算技术优化,提升系统性能与可靠性。同时,加强全面测试、实时监控及故障管理,确保系统稳定运行。
|
4月前
|
监控 测试技术
如何进行系统压力测试?
【10月更文挑战第11天】如何进行系统压力测试?
225 34
|
3月前
|
数据库连接 Go 数据库
Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性
本文探讨了Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性;防御编程则强调在编码时考虑各种错误情况,确保程序健壮性。文章详细介绍了这两种技术在Go语言中的实现方法及其重要性,旨在提升软件质量和可靠性。
57 1

热门文章

最新文章