当前位置: 首页 > 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()

相关文章:

  • 【C++重载操作符与转换】构造函数和复制控制
  • CSS-PureCss样式开发
  • 神经网络是如何工作的
  • 采用AI神经网络降噪算法的通信语音降噪(ENC)模组性能测试和应用
  • 迅为RK3568开发板内核模块实现-编译模块
  • 查看购物车
  • 透视相机:创意摄影新体验,解锁照片无限可能
  • 几何_平面方程表示_点+向量形式
  • python二手书交易管理系统
  • 直方图特征结合 ** 支持向量机图片分类
  • 如何在通义灵码里使用 MCP 能力?
  • 香港维尔利健康科技集团亮相中国资本市场发展年会,被评为“最具投资价值医疗科技企业”
  • Matlab 汽车制动纵向动力学模型和PID控制
  • 【美国将取消对能源之星支持 严重影响AI服务器】
  • 鸿蒙(HarmonyOS)应用开发入门教程
  • 使用达梦数据库官方管理工具SQLark导入与导出数据库表
  • 软件设计师-错题笔记-系统开发与运行
  • mapreduce-wordcount程序2
  • 四、SpringMVC实战:构建高效表述层框架
  • Spring Bean生命周期简介-笔记
  • 吉林:消纳绿电,“氢”装上阵
  • 最美西游、三星堆遗址等入选“2025十大年度IP”
  • 通辽警方侦破一起积压21年的命案:嫌疑人企图强奸遭反抗后杀人
  • 教育部基础教育教指委:稳步推进中小学人工智能通识教育
  • 干部任职公示:陕西宁强、镇安两县县长拟进一步使用
  • 上海“量子城市”先导应用场景落地曹杨社区,提供哪些服务?