IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 【测试开发】博客系统——利用selenium的unittest框架进行基本功能测试并生成HTML报告 -> 正文阅读

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

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


在这里插入图片描述

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

登陆模块

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)

在这里插入图片描述

生成HTML测试报告

在这里插入图片描述

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:55:28  更:2022-03-30 18:56:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 0:43:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码