自动化理论基础(2)—开发语言之Python
一、知识汇总
掌握 Python 编程语言需要具备一定的基础知识和技能,特别是对于从事自动化测试等领域的工程师。以下是掌握 Python 的一些关键方面:
基本语法: 理解 Python 的基本语法,包括变量、数据类型、运算符、条件语句、循环语句等。
数据结构: 熟悉并能够使用 Python 的常见数据结构,如列表、元组、字典和集合。
函数和模块: 能够定义和调用函数,了解模块的概念,并能够使用标准库中的模块。
异常处理: 了解异常处理机制,能够编写代码来处理可能出现的异常情况。
文件操作: 能够进行文件的读写操作,理解文件对象和文件处理方法。
面向对象编程(OOP): 了解面向对象编程的基本概念,包括类、对象、继承、多态等。
模块化和代码复用: 能够编写可重用的模块,实现代码的模块化和可维护性。
测试框架: 对于自动化测试工程师,掌握至少一种 Python 测试框架,如 Pytest 或 unittest。
版本控制系统: 了解并能够使用 Git 进行版本控制,以便协同开发和管理代码。
虚拟环境和依赖管理: 能够使用虚拟环境管理 Python 项目的依赖,如使用 virtualenv 或 venv。
基本的网络和 Web 开发知识: 对于自动化测试,理解基本的网络通信和 Web 开发概念,包括 HTTP/HTTPS 协议、API 测试等。
常用库和框架: 熟悉并能够使用 Python 的一些常用库和框架,例如 requests(处理 HTTP 请求)、Beautiful Soup(解析 HTML)、Selenium(Web 自动化测试)等。
这些都是掌握 Python 编程语言时的基本要求。具体要求还可能受到所从事的具体工作领域和项目的影响。随着经验的积累,可以逐渐深入学习 Python 的高级特性和更复杂的应用场景。
二、Python基本语法
1. 变量和数据类型
# 变量赋值
x = 5
name = "John"# 数据类型
number = 10 # 整数
float_number = 3.5 # 浮点数
string = "Hello" # 字符串
boolean = True # 布尔值# 列表和元组
my_list = [1, 2, 3]
my_tuple = (1, 2, 3)# 字典
my_dict = {"key": "value", "age": 25}# 集合
my_set = {1, 2, 3}
2、控制流程
(1)条件语句
if x > 0:print("Positive")
elif x < 0:print("Negative")
else:print("Zero")
(2)循环语句
# for 循环
for item in my_list:print(item)# while 循环
counter = 0
while counter < 5:print(counter)counter += 1
3、函数
# 函数定义
def greet(name):print("Hello, " + name + "!")# 函数调用
greet("Alice")
4、输入输出
# 输入
user_input = input("Enter a number: ")
number = int(user_input)# 输出
print("The square of", number, "is", number**2)
5、异常处理
(1)try-except块:
try:result = 10 / 0
except ZeroDivisionError:print("Cannot divide by zero!")
finally:print("This will always execute.")
(2)多个except块:
try:value = int("abc")
except ValueError:print("Error: Invalid integer format")
except Exception as e:print(f"Error: {e}")
6、文件操作
# 写入文件
with open("example.txt", "w") as file:file.write("Hello, Python!")# 读取文件
with open("example.txt", "r") as file:content = file.read()print(content)
三、面向对象
Python 是一种面向对象的编程语言。在 Python 中,几乎一切都是对象,包括基本数据类型(如整数、浮点数、字符串)以及用户自定义的类和对象。Python 支持面向对象编程的核心概念,包括类、对象、封装、继承和多态。
1、类和对象: 在 Python 中,类是对象的模板,对象是类的实例。通过定义类,可以创建具有特定属性和方法的对象。
class Dog:def __init__(self, name):self.name = namedef bark(self):print(f"{self.name} is barking!")my_dog = Dog("Buddy")
my_dog.bark()
2、封装: 封装允许将数据和方法封装在类的内部,通过对外提供公共接口来隐藏内部实现的细节。
class BankAccount:def __init__(self, balance): #构造函数self.balance = balancedef deposit(self, amount):self.balance += amountdef withdraw(self, amount):if amount <= self.balance:self.balance -= amountelse:print("Insufficient funds")account = BankAccount(1000)
account.withdraw(500)
3、继承: 继承允许一个类继承另一个类的属性和方法,从而实现代码的重用和扩展。
class Animal:def speak(self):passclass Dog(Animal):def speak(self):print("Woof!")class Cat(Animal):def speak(self):print("Meow!")my_dog = Dog()
my_dog.speak()
4、多态: 多态允许不同的类共享相同的接口,但具体的实现可以不同。这使得代码更灵活,能够处理不同类型的对象。
def animal_sound(animal):animal.speak()my_dog = Dog()
my_cat = Cat()animal_sound(my_dog) # 输出 "Woof!"
animal_sound(my_cat) # 输出 "Meow!"
四、常用的库
1、文件读写:
openpyxl: 用于处理Excel文件的库,支持读写Excel文件。
pandas: 提供高性能、易用的数据结构和数据分析工具,支持多种文件格式(如CSV、Excel)的读写。
2、生成报告:
Jinja2: 模板引擎,用于生成动态内容的报告。
ReportLab: 用于创建PDF文档的库,可用于生成带有图表和文本的报告。
Matplotlib: 用于绘制图表和图形,可以在报告中插入图表。
3、发送报告:
smtplib(内置库): 用于发送电子邮件,可用于将测试报告通过电子邮件发送。
yagmail: 简化了使用smtplib发送邮件的过程,支持HTML内容和附件。
4、测试报告框架:
HTMLTestRunner: 一个生成HTML格式测试报告的框架,适用于unittest。
pytest-html: 适用于pytest的HTML测试报告插件。
5、日志记录:
logging(内置库): Python的官方日志记录模块,可用于在测试中记录信息。
loguru: 提供更简单和强大的日志记录功能,支持文件、控制台等多种输出。
6、网络请求:
requests: 用于发送HTTP请求的库,适用于API测试。
7、通信
串口通信:serial
Can通信: python-can
import serial
# 打开串口
ser = serial.Serial('COM1', 9600, timeout=1)# 发送数据
ser.write(b'Hello, serial!')# 接收数据
data = ser.readline()
print('Received:', data)# 关闭串口
ser.close()
8、其他常用库:
NumPy: 用于科学计算和数学操作的库。
Beautiful Soup: 用于从HTML和XML文档中提取信息的库。
Scrapy: 一个用于爬取网站数据的框架。
Flask/Django: 用于构建Web应用程序的框架。
五、常用的自动化测试框架
Python中有几个常用的自动化测试框架,它们提供了各种工具和功能来简化测试流程。以下是一些常见的Python自动化测试框架:
unittest: 这是Python内置的测试框架,提供了测试用例、测试套件、断言等基本测试工具。它的使用方式受到Java中JUnit的影响。
pytest: 一个功能丰富而灵活的测试框架,支持自动发现测试用例、参数化测试、丰富的插件系统等。它的语法简洁易懂,也能与其他测试工具和框架很好地集成。
nose2: 基于unittest的扩展,提供了更多功能和插件支持,支持测试发现、标记、插件等。它的目标是提供更好的发现和运行测试的方式。
Robot Framework: 一个通用的自动化测试框架,支持关键字驱动和行为驱动开发。它易于学习,可用于Web、移动应用、API等测试,并支持关键字库扩展。
Behave: 一个行为驱动开发(BDD)框架,基于Gherkin语言。它结合了自然语言的表达力和Python的强大功能,使得测试用例更具可读性。
Selenium: 虽然它主要用于Web应用程序的自动化测试,但也是一个强大的工具。通过结合Selenium WebDriver和测试框架(如pytest或unittest),可以实现更复杂的Web应用测试。
六、其它
1、元组、列表、字典、集合的区别
元组、列表、字典和集合是Python中常用的四种数据结构,它们有各自的特点和适用场景。
(1). 元组(Tuple):
表示方式: 使用圆括号 () 表示,例如:my_tuple = (1, 2, 3).
可变性: 不可变,一旦创建就不能修改。
索引访问: 支持索引访问,类似于列表。
适用场景: 适用于希望创建不可变序列的情况,例如函数返回多个值时。
(2). 列表(List):
表示方式: 使用方括号 [] 表示,例如:my_list = [1, 2, 3].
可变性: 可变,允许修改、添加或删除元素。
索引访问: 支持索引访问。
适用场景: 适用于需要一个有序、可变的集合的情况,例如存储同类型的元素。
(3). 字典(Dictionary):
表示方式: 使用花括号 {} 表示,例如:my_dict = {“key1”: “value1”, “key2”: “value2”}.
可变性: 可变,可以修改、添加或删除键值对。
键值对: 由键和值组成,通过键来访问值。
适用场景: 适用于需要存储键值对的情况,键是唯一的。
(4). 集合(Set):
表示方式: 使用花括号 {} 表示,例如:my_set = {1, 2, 3}.
可变性: 可变,可以添加或删除元素。
唯一性: 元素是唯一的,不会重复。
适用场景: 适用于需要存储无序且唯一元素的情况,例如去重。
总体而言,选择使用哪种数据结构取决于你的具体需求。元组适用于不可变序列,列表适用于有序可变集合,字典适用于键值对存储,集合适用于无序唯一元素的情况。
2、堆和栈的区别
堆和栈是两个用于管理程序运行时内存的区域。栈用于存储函数调用的上下文、局部变量等,而堆用于存储动态分配的对象、数据结构等。
内容:
堆(Heap): 用于动态分配内存,存储对象、数据结构等。在堆上分配的内存需要手动管理,通常通过new关键字来分配,并由程序员负责释放。
栈(Stack): 存储函数调用的上下文、局部变量、函数参数等,遵循后进先出(LIFO)原则。栈上的数据的生命周期与函数调用关联,当函数执行完成时,栈上的数据自动被释放。
3、构造函数
在 Python 中,构造函数 init 在创建类的实例时自动被调用,用于执行一些初始化操作。在创建实例时,首先调用构造函数,然后再执行其他的初始化代码。
以下是一个简单的示例,展示了如何在 Python 中定义和使用构造函数:
class MyClass:
# 构造函数def __init__(self, param1, param2):# 在构造函数中进行初始化操作self.attribute1 = param1self.attribute2 = param2print("Object created with attributes:", self.attribute1, self.attribute2)# 创建类的实例,会自动调用构造函数
my_object = MyClass("value1", "value2")
在 Python 中,self 是一个约定俗成的参数名称,用于表示对象实例本身。它在类的方法中作为第一个参数传递,以便可以访问和操作对象的属性和方法。
即使没有传参的函数,如果是类的方法,仍然需要在参数列表中保护‘self’。
4、python中 有 public private等关键字吗?
在 Python 中,没有像其他编程语言(如Java、C++)那样明确定义的 public、private 等访问修饰符。Python采用了一种不同的方式来处理成员的可见性和访问权限。
在 Python 中,成员(变量或方法)的可见性主要通过命名约定来实现。以下是一些常见的约定:
公共成员: 通常没有特殊的命名约定,可以直接访问。
class MyClass:def __init__(self):self.public_member = 42
受保护成员: 以一个下划线 _ 开头,表示应该被视为受保护的,不建议直接访问。
class MyClass:def __init__(self):self._protected_member = 42
私有成员: 以两个下划线 __ 开头,表示是私有的,应该避免直接访问。
class MyClass:def __init__(self):self.__private_member = 42
虽然可以通过以上约定来表示可见性,但在 Python 中,这只是一种约定,而不是强制性的规则。Python 的理念之一是“我们都是成年人”,即程序员有责任遵守这些约定,而不是通过强制规则来限制访问。这也使得 Python 更加灵活和自由。
相关文章:
自动化理论基础(2)—开发语言之Python
一、知识汇总 掌握 Python 编程语言需要具备一定的基础知识和技能,特别是对于从事自动化测试等领域的工程师。以下是掌握 Python 的一些关键方面: 基本语法: 理解 Python 的基本语法,包括变量、数据类型、运算符、条件语句、循环…...
Spark算子(RDD)超细致讲解
SPARK算子(RDD)超细致讲解 map,flatmap,sortBykey, reduceBykey,groupBykey,Mapvalues,filter,distinct,sortBy,groupBy共10个转换算子 (一)转换算子 1、map from pyspark import SparkContext# 创建SparkContext对象 sc Spark…...
转盘寿司(100%用例)C卷 (JavaPythonC++Node.jsC语言)
寿司店周年庆,正在举办优惠活动回馈新老客户。 寿司转盘上总共有n盘寿司,prices[i]是第i盘寿司的价格,如果客户选择了第i盘寿司,寿司店免费赠送客户距离,第i盘寿司最近的下一盘寿司i,前提是prices[j]< prices[i],如果没有满足条件的j,则不赠送寿司。 每个价格的寿司都…...

【python】搭配Miniconda使用VSCode
现在的spyder总是运行出错,启动不了,尝试使用VSCode。 一、在VSCode中使用Miniconda管理的Python环境,可以按照以下步骤进行: a. 确保Miniconda环境已经安装并且正确配置。 b. 打开VSCode,安装Python扩展。 打开VS…...

从购买服务器到部署前端VUE项目
购买 选择阿里云服务器,地址:https://ecs.console.aliyun.com/home。学生会送一个300的满减券,我买了一个400多一年的,用券之后100多点。 使用SSH连接服务器 我选择的是vscode 中SSH工具。 安装一个插件 找到配置文件配置一下…...
python中print函数的用法
在 Python 中,print() 函数是用于输出信息到控制台的内置函数。它可以将文本、变量、表达式等内容打印出来,方便程序员进行调试和查看结果。print() 函数的基本语法如下: ``` print(*objects, sep= , end=\n, file=sys.stdout, flush=False) ``` 其中,objects 是要打印…...

SpringBoot整合MyBatis项目进行CRUD操作项目示例
文章目录 SpringBoot整合MyBatis项目进行CRUD操作项目示例1.1.需求分析1.2.创建工程1.3.pom.xml1.4.application.properties1.5.启动类 2.添加用户2.1.数据表设计2.2.pojo2.3.mapper2.4.service2.5.junit2.6.controller2.7.thymeleaf2.8.测试 3.查询用户3.1.mapper3.2.service3…...

Android Studio下载gradle反复失败
我的版本:gradle-5.1.1 首先检查设置路径是否正确,参考我的修改! 解决方案 1.手动下载Gradle.bin Gradle Distributions 下载地址 注意根据编译器提示下载,我这要求下载的是bin 而不是all 2.把下载好的整个压缩包放在C:\Users\…...

【HTML5】 canvas 绘制图形
文章目录 一、基本用法二、用法详见2.0、方法属性2.1、绘制线条2.2、绘制矩形2.3、绘制圆形2.4、绘制文本2.5、填充图像 一、基本用法 canvas 标签:可用于在网页上绘制图形(使用 JavaScript 在网页上绘制图像)画布是一个矩形区域,…...

【数据结构】二叉树-堆(top-k问题,堆排序,时间复杂度)
🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343🔥 系列专栏:《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm1001.2014.3001.5482 目录 堆排序 第一种 编辑 第二种 …...
通过浏览器判断是否安装APP
场景 求在分享出来的h5页面中,有一个立即打开的按钮,如果本地安装了我们的app,那么点击就直接唤本地app,如果没有安装,则跳转到下载。 移动端 判断本地是否安装了app 首先我们可以确认的是,在浏览器中无…...

vivado Revision Control
2020.2 只需要git 管理 prj.xpr 和 prj.srcs/ https://china.xilinx.com/video/hardware/ip-revision-control.html Using Vivado Design Suite with Revision Control https://www.xilinx.com/video/hardware/vivado-design-suite-revision-control.html http://www.xi…...

【AI视野·今日Robot 机器人论文速览 第七十三期】Tue, 9 Jan 2024
AI视野今日CS.Robotics 机器人学论文速览 Tue, 9 Jan 2024 Totally 40 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers Digital Twin for Autonomous Surface Vessels for Safe Maritime Navigation Authors Daniel Menges, Andreas Von Brandis, A…...
java解析json复杂数据的第四种思路
文章目录 一、概述二、数据预览1. 接口json数据 三、代码实现1. 核心代码2. 字符串替换结果3. 运行结果 一、概述 接前两篇 java解析json复杂数据的两种思路 java解析json复杂数据的第三种思路 我们已经有了解析json数据的几种思路,下面介绍的方法是最少依赖情况下…...

【不用找素材】ECS 游戏Demo制作教程(1) 1.15
一、项目设置 版本:2022.2.0f1 (版本太低的话会安装不了ECS插件) 模板选择3D URP 进来后移除URP(因为并不是真的需要,但也不是完全不需要) Name: com.unity.entities.graphics Version: 1.0.0-exp.8 点击…...
Mysql的in与exits
Mysql的in与exits IN和EXISTS是MySQL中用于子查询的两种不同的条件操作符。它们在使用和实现上有一些区别。 IN 操作符: IN操作符用于判断一个值是否在一个集合内。它可以用于子查询中,检查主查询的某一列是否在子查询返回的结果集中。 SELECT colum…...

浅谈对Maven的理解
一、什么是Maven Maven——是Java社区事实标准的项目管理工具,能帮你从琐碎的手工劳动中解脱出来,帮你规范整个组织的构建系统。不仅如此,它还有依赖管理、自动生成项目站点等特性,已经有无数的开源项目使用它来构建项目并促进团队…...

【算法实验】实验2
实验2-1 二分搜索 【问题描述】给定一个包含 n 个元素有序的(升序)整型数组 nums 和一个目标值 target,要求实现搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。题目保证nums中的所有元素都不重复。 【…...
杂记:使用 mac 和 windows 以及编辑器的总结
Chrome 扩展 Grammarly 语法检查 DM Integration Module idm 下载扩展 JSON Formatter json 格式化查看 uBlock Origin Ad block 油猴 任意网站都可以使用的脚本管理工具 Mac 快捷键整理 截图到剪贴板 shift command control 4 (不按 shift 存储为文件) 切换输入法…...

vue2使用qiankun微前端(跟着步骤走可实现)
需求:做一个vue2的微前端,以vue2为主应用,其他技术栈为子应用,比如vue3,本文章只是做vue2一套的微前端应用实现,之后解决的一些问题。vue3子应用可以看我另一篇vue3vitets实现qiankun微前端子应用-CSDN博客…...

C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...

Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...

现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)
UniApp 集成腾讯云 IM 富媒体消息全攻略(地理位置/文件) 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型,核心实现方式: 标准消息类型:直接使用 SDK 内置类型(文件、图片等)自…...

数据结构:泰勒展开式:霍纳法则(Horner‘s Rule)
目录 🔍 若用递归计算每一项,会发生什么? Horners Rule(霍纳法则) 第一步:我们从最原始的泰勒公式出发 第二步:从形式上重新观察展开式 🌟 第三步:引出霍纳法则&…...

Redis专题-实战篇一-基于Session和Redis实现登录业务
GitHub项目地址:https://github.com/whltaoin/redisLearningProject_hm-dianping 基于Session实现登录业务功能提交版本码:e34399f 基于Redis实现登录业务提交版本码:60bf740 一、导入黑马点评后端项目 项目架构图 1. 前期阶段2. 后续阶段导…...

python学习day39
图像数据与显存 知识点回顾 1.图像数据的格式:灰度和彩色数据 2.模型的定义 3.显存占用的4种地方 a.模型参数梯度参数 b.优化器参数 c.数据批量所占显存 d.神经元输出中间状态 4.batchisize和训练的关系 import torch import torchvision import torch.nn as nn imp…...
大模型的LoRa通讯详解与实现教程
一、LoRa通讯技术概述 LoRa(Long Range)是一种低功耗广域网(LPWAN)通信技术,由Semtech公司开发,特别适合于物联网设备的长距离、低功耗通信需求。LoRa技术基于扩频调制技术,能够在保持低功耗的同时实现数公里甚至数十公里的通信距离。 LoRa的主要特点 长距离通信:在城…...
ubuntu系统 | docker+dify+ollama+deepseek搭建本地应用
1、docker 介绍与安装 docker安装:1、Ubuntu系统安装docker_ubuntu docker run-CSDN博客 docker介绍及镜像源配置:2、ubuntu系统docker介绍及镜像源和仓库配置-CSDN博客 docker常用命令:3、ubuntu系统docker常用命令-CSDN博客 docker compose安装:4、docker compose-CS…...