软件测试之 自动化测试 基于Python语言使用Selenium、ddt、unitTest 实现自动化测试(下)

简介: 软件测试之 自动化测试 基于Python语言使用Selenium、ddt、unitTest 实现自动化测试(下)

软件测试之 自动化测试 基于Python语言使用Selenium、ddt、unitTest 实现自动化测试(上):https://developer.aliyun.com/article/1548604


Fixture

  • 使用setupclass需要加上@classmethod注解

使用 @classmethod 装饰器将 setUpClass 标识为类方法,它的第一个参数通常被命名为 cls,并允许你访问和操作类级别的资源,类方法需要该装饰器

箭头 -> None 不是Python函数定义的一部分,而是类型注释(type hinting)的一部分。它表示函数的返回类型。在这种情况下,-> None 意味着该函数没有返回值,即返回的是 None

在Python中,函数的返回类型通常不需要显式声明,因为Python是一种动态类型语言,函数可以返回各种不同类型的值。然而,类型注释是一种提供额外信息以帮助代码阅读和静态代码分析的机制。在类型注释中,-> None 表示函数的返回值是 None,即没有返回值。

数据断言

断言方法 参数要求 作用
assertEqual(a, b) a 和 b 需要是可比较的,通常是相同类型。 检查 a 和 b 是否相等。
assertNotEqual(a, b) a 和 b 同样需要是可比较的,通常是相同类型。 检查 a 和 b 是否不相等。
assertTrue(x) x 应该是一个布尔值(True 或 False)。 检查 x 是否为 True。
assertFalse(x) x 应该是一个布尔值(True 或 False)。 检查 x 是否为 False。
assertIs(a, b) a 和 b 应该是对象,用于检查对象的身份。 检查 a 和 b 是否是相同的对象(身份相同)。
assertIsNot(a, b) a 和 b 应该是对象,用于检查对象的身份。 检查 a 和 b 是否不是相同的对象(身份不同)。
assertIn(a, b) a 和 b 可以是可迭代的对象,其中 a 是 b 的一个元素。 检查 a 是否在 b 中存在。
assertNotIn(a, b) a 和 b 可以是可迭代的对象,其中 a 不是 b 的一个元素。 检查 a 是否不在 b 中存在。
assertIsNone(x) x 可以是任何对象,用于检查它是否为 None。 检查 x 是否为 None。
assertIsNotNone(x) x 可以是任何对象,用于检查它是否不为 None。 检查 x 是否不为 None。

可迭代对象是指能够被迭代遍历的数据结构,通常是包含多个元素的集合。在Python中,许多数据类型都是可迭代的,包括但不限于:

  1. 列表(List):有序的元素集合,可以按照索引访问。
  2. 元组(Tuple):类似于列表,但是不可变的。
  3. 字符串(String):由字符组成的有序序列。
  4. 集合(Set):无序的元素集合,不包含重复元素。
  5. 字典(Dictionary):包含键-值对的集合,可以按键访问值。
  6. 范围(Range):表示一系列连续的整数。
  7. 文件对象(File Object):可以逐行读取文件内容。
  8. 迭代器(Iterator):自定义的可迭代对象,通过实现 __iter__()__next__() 方法来支持迭代。

  • 数据断言不返回结果,想要使用变量接收只能获得none

  • assetIn方法要求左边是被判断的元素
生成测试报告

import unittest
import time
from HTMLTestRunner import HTMLTestRunner
suite = unittest.defaultTestLoader.discover("../case", pattern="test*.py")
if __name__ == '__main__':
    # 测试报告存放位置
    reportDir = '../case/test_report'
    now = time.strftime("%Y-%m-%d-%H-%M-%S")
    report_name = reportDir + '/' + now + 'result.html'
    with open(report_name, 'wb') as f:  # 更改为 'wb' 模式
        runner = HTMLTestRunner(stream=f, title="标题", description="小标题")
        runner.run(suite)
    f.close()
  • 该代码所使用的HTMLTestRunner不是原生的,而是经过美化的
  • 学习测试报告的前置条件是知道python中的 with 语句
  • 文本文件(txt等)使用w模式
  • 图片文件使用wb模式
  • CSV文件使用a模式追加写
  • HTML/XML文件使用w模式
  • 测试报告使用wb模式写入图片数据

with语句的主要特点和作用如下:

  • 自动调用对象的__enter__()和__exit__()方法进行资源获取和释放操作。
  • 可以保证在代码块执行前后正确地打开和关闭资源,不用担心忘记关闭资源导致问题。

as关键字在with语句中的作用和含义是:

  • 将文件对象或其他对象赋值给一个变量,以便后续使用。
  • 相当于给文件对象或其他对象起一个“别名”

wb和w模式打开文件有以下区别:

  • w模式:

以文本写入模式打开文件,如果文件不存在则创建,如果文件存在则将其内容清空后再写入。

这样写入的传输的是bytes

  • wb模式:

以二进制写入模式打开文件,如果文件不存在则创建,如果文件存在则将其内容清空后再写入。

这样写入传输的是str

主要区别在于:

  • w模式打开文件时采用文本模式,会对换行符等字符做转换。适用于文本文件。
  • wb模式打开文件时采用二进制模式,不会对任何字符做转换。数据以原始二进制形式写入。适用于图片、视频等二进制文件。

发送邮件

PageObject模式与思想

雏形

  • 将定位元素的值视作属性,将一个页面看作对象(一个类文件)
  • 页面对象必须写在path文件夹中
  • 最后将所有模块内容组合起来

  • 将整个测试流程分层两个模块,Page模块负责页面的操作,而不进行测试
  • scripts负责测试
最终版本
  • 添加了基类

  • 项目结构为基类层,页面层,脚本层

  • 小括号表示元组

  • 不写小括号也可以
  • 解包后,可以被selenium识别到

  • 如果要在参数中就解码,那就需要所有用到的地方都使用*

大bug

  • 一个是访问基类中的base_click一个是访问当前类的base_click。正确的应该是使用当前类的,然后借着继承关系来访问到基类

  • 该bug是个复合bug先数据的拆包没有成功

  • 模块需要封装成类方法

dJydHhYx-1715083072843)]

[外链图片转存中…(img-s8fyLE1T-1715083072844)]

  • 如果要在参数中就解码,那就需要所有用到的地方都使用*

大bug

[外链图片转存中…(img-bOl9BqsR-1715083072844)]

  • 一个是访问基类中的base_click一个是访问当前类的base_click。正确的应该是使用当前类的,然后借着继承关系来访问到基类

[外链图片转存中…(img-FNUg34qz-1715083072845)]

[外链图片转存中…(img-FAhvZlZf-1715083072846)]

  • 该bug是个复合bug先数据的拆包没有成功

[外链图片转存中…(img-Ul3kdNmm-1715083072847)]

  • 模块需要封装成类方法
Qiuner
+关注
目录
打赏
0
3
3
0
29
分享
相关文章
探索软件测试中的自动化测试框架选择与优化策略
本文深入探讨了在现代软件开发流程中,如何根据项目特性、团队技能和长期维护需求,精准选择合适的自动化测试框架。
159 11
CDP与Selenium相结合——玩转网页端自动化数据采集/爬取程序
本文介绍了Selenium、Chrome DevTools及Chrome DevTools Protocol (CDP) 的基本功能与应用。Selenium是一款开源自动化测试工具,适用于网页端应用程序测试和数据采集,具备跨平台特性。Chrome DevTools内置浏览器中,提供调试、分析Web应用程序的功能,包括元素、控制台、源代码和网络选项卡等。CDP是一套用于与Chromium内核浏览器通信的API,支持自动化测试和性能分析。文中还展示了Selenium与CDP结合使用的示例,如捕获网络请求数据和打印网页内容,并推荐了相关书籍和资源以供深入学习。
357 39
CDP与Selenium相结合——玩转网页端自动化数据采集/爬取程序
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
150 31
Selenium IDE:Web自动化测试的得力助手
pytest接口自动化测试框架搭建
通过上述步骤,我们成功搭建了一个基于 `pytest`的接口自动化测试框架。这个框架具备良好的扩展性和可维护性,能够高效地管理和执行API测试。通过封装HTTP请求逻辑、使用 `conftest.py`定义共享资源和前置条件,并利用 `pytest.ini`进行配置管理,可以大幅提高测试的自动化程度和执行效率。希望本文能为您的测试工作提供实用的指导和帮助。
116 15
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
Midscene.js 是一款基于 AI 技术的 UI 自动化测试框架,通过自然语言交互简化测试流程,支持动作执行、数据查询和页面断言,提供可视化报告,适用于多种应用场景。
590 1
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
探索软件测试中的自动化与持续集成
【10月更文挑战第21天】 在软件开发的生命周期中,软件测试扮演着至关重要的角色。随着技术的进步和开发模式的转变,自动化测试和持续集成已经成为提高软件质量和效率的关键手段。本文将深入探讨自动化测试和持续集成的概念、实施策略以及它们如何相互配合以优化软件开发流程。我们将通过分析实际案例,展示这些技术如何在实际项目中发挥作用,以及面临的挑战和解决方案。此外,文章还将讨论未来趋势,包括人工智能在测试领域的应用前景。
99 17
探索软件测试中的自动化测试框架
本文深入探讨了自动化测试在软件开发中的重要性,并详细介绍了几种流行的自动化测试框架。通过比较它们的优缺点和适用场景,旨在为读者提供选择合适自动化测试工具的参考依据。
软件测试中的自动化测试策略与最佳实践
在当今快速迭代的软件开发环境中,自动化测试已成为确保软件质量和加速产品上市的关键手段。本文旨在探讨软件测试中的自动化测试策略,包括选择合适的自动化测试工具、构建有效的自动化测试框架以及实施持续集成和持续部署(CI/CD)。通过分析自动化测试的最佳实践,本文为软件开发团队提供了一系列实用的指南,以优化测试流程、提高测试效率并减少人为错误。
96 4
自动化测试之美:从零开始搭建你的Python测试框架
在软件开发的马拉松赛道上,自动化测试是那个能让你保持节奏、避免跌宕起伏的神奇小助手。本文将带你走进自动化测试的世界,用Python这把钥匙,解锁高效、可靠的测试框架之门。你将学会如何步步为营,构建属于自己的测试庇护所,让代码质量成为晨跑时清新的空气,而不是雾霾中的忧虑。让我们一起摆脱手动测试的繁琐枷锁,拥抱自动化带来的自由吧!
软件测试中的自动化与持续集成
在现代软件开发过程中,自动化测试和持续集成已成为不可或缺的组成部分。本文将深入探讨自动化测试和持续集成的重要性、优势以及如何有效实施它们以提升软件质量和开发效率。通过具体案例分析,我们将展示这些技术如何在实际项目中发挥作用,并讨论其面临的挑战及应对策略。
81 3

热门文章

最新文章