【测试开发】博客系统——利用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


相关文章
|
1天前
|
jenkins 测试技术 持续交付
Pytest测试框架
Pytest是一个功能强大的测试框架,支持单元测试和复杂功能测试,可结合Requests和Selenium等进行接口和自动化测试。它拥有超过315个插件,兼容unittest,并能与Allure、Jenkins集成实现持续集成。安装可通过pip或Pycharm。Pytest遵循特定命名规则,测试用例由名称、步骤和断言组成。断言用于验证预期结果,当失败时程序会终止。Pytest提供setup/teardown机制来管理测试前后的资源。
15 3
|
1天前
|
Web App开发 设计模式 测试技术
python自动化测试实战 —— 自动化测试框架的实例
python自动化测试实战 —— 自动化测试框架的实例
13 0
|
1天前
|
监控 数据可视化 IDE
python自动化测试实战 —— 单元测试框架
python自动化测试实战 —— 单元测试框架
10 2
|
1天前
|
Java 测试技术 数据库连接
【如何学习Python自动化测试】—— Python 的 unittest 框架
【如何学习Python自动化测试】—— Python 的 unittest 框架
5 0
|
1天前
|
敏捷开发 开发框架 自然语言处理
深入理解软件测试中的自动化框架选择
【5月更文挑战第12天】 在现代软件开发周期中,自动化测试已成为确保产品质量和加速市场交付的关键组成部分。选择合适的自动化测试框架对于实现有效的测试策略至关重要。本文将探讨在选择自动化测试框架时应考虑的关键因素,包括框架的可扩展性、易用性、社区支持和集成能力。通过分析比较Selenium、Appium和TestNG等流行框架的特点,本文旨在为读者提供一个清晰的指南,帮助他们根据具体的项目需求做出明智的选择。
|
1天前
|
Java 中间件 测试技术
深入理解自动化测试框架Selenium的设计与实现
【5月更文挑战第10天】 本文旨在深度剖析自动化测试工具Selenium的核心架构与实现机制,通过对其设计理念、组件结构以及在实际软件测试中的应用进行详细解读,使读者能够全面理解Selenium在现代Web应用测试中的重要性和有效性。文章首先介绍Selenium的发展背景及其解决的问题,然后详细探讨其架构设计,包括各种驱动和API的作用,最后结合实际案例分析Selenium如何提高测试效率和准确性。
|
1天前
|
测试技术
测试基础 Junit单元测试框架
测试基础 Junit单元测试框架
12 2
测试基础 Junit单元测试框架
|
1天前
|
Java 测试技术 持续交付
自动化测试框架选型与实战:深入探索与应用
【5月更文挑战第8天】本文探讨了自动化测试框架的选型与实战应用,强调了其在软件质量保障中的重要性。选型原则包括考虑项目需求、技术栈、可扩展性和可维护性,以及社区支持和文档。介绍了Selenium、Appium、JUnit和Pytest等常用框架,并概述了实战应用的步骤,包括明确需求、搭建环境、编写测试用例、执行测试、分析结果、维护代码和持续集成。合理选型与实践能提升测试效率,保障项目成功。
|
1天前
|
敏捷开发 测试技术 持续交付
深入理解自动化测试:框架与实践
【5月更文挑战第5天】 在现代软件开发周期中,自动化测试已成为确保产品质量和加速交付过程的关键环节。本文将深入探讨自动化测试的核心概念、框架选择以及实际实施过程中的最佳实践。通过分析各种自动化测试工具和技术的优缺点,我们旨在为读者提供一种系统化的方法来构建和维护有效的自动化测试环境。
|
1天前
|
机器学习/深度学习 人工智能 自然语言处理
自动化测试中AI驱动的决策框架设计与实现
【5月更文挑战第5天】 在软件测试领域,自动化测试已成为提升测试效率和质量的关键手段。然而,随着软件系统的复杂性增加,传统的自动化测试方法面临挑战,尤其在测试用例的生成、执行及结果分析等方面。本文提出一种基于人工智能(AI)的自动化测试决策框架,旨在通过智能化的算法优化测试过程,并提高异常检测的准确率。该框架结合机器学习和深度学习技术,能够自学习历史测试数据,预测高风险变更区域,自动生成针对性强的测试用例,并在测试执行过程中实时调整测试策略。此外,通过自然语言处理(NLP)技术,该框架还能对测试结果进行语义分析,进一步提供更深入的洞察。本研究不仅增强了自动化测试工具的智能性,也为软件质量保证提

热门文章

最新文章