当前位置: 首页 > news >正文

web 自动化之 Unittest 应用:测试报告装饰器断言

文章目录

      • 一、常见的第三方库结合 unittest 生产 html 格式测试报告
        • 1、HtmlTestRunner
        • 2、BeatifulReport
      • 二、装饰器 @ unittest.skip 强制跳过&条件跳过
      • 三、unittest的常用断言方法

一、常见的第三方库结合 unittest 生产 html 格式测试报告

1、HtmlTestRunner

官网下载 HtmlTestRunner.py 只能支持 python2 版本,支持 Python3 ,需要做修改
路径:python安装路径/Lib

import unittest
from TestReport.testcase_01 import TestCase01
import HTMLTestRunner# 加载用例
testcases = unittest.TestLoader().loadTestsFromTestCase(TestCase01)
# HTMLTestRunner 生成的测试报告
with open('F:/Pycharm/TestShop/TestReport/html_report.html', 'wb+') as hf:HTMLTestRunner.HTMLTestRunner(stream=hf,title="Html 测试报告",description="测试用例执行详情").run(testcases)

HTMLTestRunner 文件内容

2、BeatifulReport

安装三方库:BeatifulReport

import unittest
from TestReport.testcase_01 import TestCase01
from BeautifulReport import BeautifulReport# 加载用例
testcases = unittest.TestLoader().loadTestsFromTestCase(TestCase01)
# BeautifulReport 生成的测试报告
BeautifulReport(testcases).report(description="Html 测试报告",filename="report_bf",report_dir="reports")

企业测试报告的优化及定制 优化测试报告模板 通过 js+html/html5
pytest+allure 生成更加美观的测试报告+优化定制(装饰器)

二、装饰器 @ unittest.skip 强制跳过&条件跳过

import unittest
"""
@unittest.skip 强制跳过执行
@unittest.skipIf 符合条件,则跳过执行
@unittest.skipUnless 条件不成立,则跳过执行
"""
# @unittest.skipUnless(False,"装饰器也可以作用于类,整个模块下的用例强制跳过执行")
class TestCase01(unittest.TestCase):@unittest.skip("此用例暂时不启用")def test_login(self):print('test_01')@unittest.skipIf(True,"符合条件,则跳过执行")def test_select_goods(self):print('test_02')@unittest.skipUnless(2>3, "不符合条件,则跳过执行")def test_put_to_cart(self):print('test_03')def test_pay_goods(self):print('test_04')
if __name__ == '__main__':unittest.main()

三、unittest的常用断言方法

import unittest
from selenium import webdriver
import time
from selenium.webdriver.common.by import By'''
二、常用断言方法
1、assertIn(字符1,字符2) 字符1是否包含在字符2
2、self.assertNotIn(字符1,字符2)  字符1不包含包含在字符2
self.assertEqual(参数1,参数2,"断言失败的描述")  参数1等于参数2
self.assertNotEqual(参数1,参数2,"断言失败的描述")参数不等于参数2
self.assertTrue(True)
self.assertFalse(False)
'''
class TestCase02(unittest.TestCase):def setUp(self) -> None:# 打开浏览器self.driver = webdriver.Edge()# 加载地址self.driver.get("http://116.62.63.211/shop/")def test_login(self):"""登录用例"""username = "hc_test"password = "hctest123"el_login_link = self.driver.find_element(By.LINK_TEXT, "登录")# 点击登录el_login_link.click()time.sleep(1)el_login = self.driver.find_element(By.XPATH, '//button[text()="登录"]')el_username = self.driver.find_element(By.NAME, "accounts")el_password = self.driver.find_element(By.XPATH, '//input[@type="password"]')# 输入用户名el_username.send_keys(username)# 输入密码el_password.send_keys(password)# 点击登录time.sleep(1)el_login.click()time.sleep(2)# 断言  获取账号的名称=usernameel_username = self.driver.find_element(By.XPATH, "//div[@class='menu-hd']/em[2]")self.assertIn(username, el_username.text)def test_select_goods(self):"""检索商品"""self.driver.get("http://116.62.63.211/shop/")select_goods = "手机"# 定位搜索输入el_select = self.driver.find_element(By.ID, "search-input")el_select.send_keys(select_goods)el_button = self.driver.find_element(By.ID, "ai-topsearch")el_button.click()time.sleep(2)# 断言:验证测试结果与预期结果是否一致# 获取商品列表的标题el_goods = self.driver.find_elements(By.XPATH, "//div[@class='items am-padding-bottom-xs']")# 判断content是否包含手机字符?# 标题是否包含手机for el in el_goods:self.assertIn(select_goods, el.text, "商品标题中未包含检索内容")def tearDown(self) -> None:self.driver.close()if __name__ == '__main__':unittest.main()

相关文章:

  • 继承关系下创建对象的具体流程
  • (十三)Java注解(Annotation)全面解析:从基础到高级应用
  • set常用接口及模拟实现
  • Kubernetes控制平面组件:Kubelet详解(二):核心功能层
  • Linux系统编程(八)--进程间通信
  • 邮件营销应对高退信率的策略
  • C语言| 局部变量、全局变量
  • Linux 详解inode
  • 各类大豆相关数据集大合集
  • 大模型的Lora如何训练?
  • 停车四柱液压举升机 2.0 版技术白皮书
  • Spark处理过程-转换算子和行动算子(一)
  • DocsGPT 远程命令执行漏洞复现(CVE-2025-0868)
  • C# 使用HttpClient下载文件
  • ​Spring Boot 配置文件敏感信息加密:Jasypt 实战
  • 深入了解 gmx_RRCS:计算原理、操作步骤及输出文件解析
  • 【TTS学习笔记】:语音合成领域基本术语
  • 二叉树路径总和
  • 【vue】全局组件及组件模块抽离
  • .NET 在鸿蒙系统上的适配现状
  • 中企动力做网站要全款/阿里云万网域名购买
  • 网络做网站/百度云登录入口
  • 在哪里可以学到做网站/二级域名网址查询
  • 福建企业网站开发/最近的新闻大事
  • 如何做百度推广网站/搜索网站排行
  • seo网站营销推广/抖音代运营大概多少钱一个月