一、知識匯總
掌握 Python 編程語言需要具備一定的基礎(chǔ)知識和技能,特別是對于從事自動化測試等領(lǐng)域的工程師。以下是掌握 Python 的一些關(guān)鍵方面:
基本語法: 理解 Python 的基本語法,包括變量、數(shù)據(jù)類型、運(yùn)算符、條件語句、循環(huán)語句等。
數(shù)據(jù)結(jié)構(gòu): 熟悉并能夠使用 Python 的常見數(shù)據(jù)結(jié)構(gòu),如列表、元組、字典和集合。
函數(shù)和模塊: 能夠定義和調(diào)用函數(shù),了解模塊的概念,并能夠使用標(biāo)準(zhǔn)庫中的模塊。
異常處理: 了解異常處理機(jī)制,能夠編寫代碼來處理可能出現(xiàn)的異常情況。
文件操作: 能夠進(jìn)行文件的讀寫操作,理解文件對象和文件處理方法。
面向?qū)ο缶幊蹋∣OP): 了解面向?qū)ο缶幊痰幕靖拍?,包括類、對象、繼承、多態(tài)等。
模塊化和代碼復(fù)用: 能夠編寫可重用的模塊,實(shí)現(xiàn)代碼的模塊化和可維護(hù)性。
測試框架: 對于自動化測試工程師,掌握至少一種 Python 測試框架,如 Pytest 或 unittest。
版本控制系統(tǒng): 了解并能夠使用 Git 進(jìn)行版本控制,以便協(xié)同開發(fā)和管理代碼。
虛擬環(huán)境和依賴管理: 能夠使用虛擬環(huán)境管理 Python 項(xiàng)目的依賴,如使用 virtualenv 或 venv。
基本的網(wǎng)絡(luò)和 Web 開發(fā)知識: 對于自動化測試,理解基本的網(wǎng)絡(luò)通信和 Web 開發(fā)概念,包括 HTTP/HTTPS 協(xié)議、API 測試等。
常用庫和框架: 熟悉并能夠使用 Python 的一些常用庫和框架,例如 requests(處理 HTTP 請求)、Beautiful Soup(解析 HTML)、Selenium(Web 自動化測試)等。
這些都是掌握 Python 編程語言時(shí)的基本要求。具體要求還可能受到所從事的具體工作領(lǐng)域和項(xiàng)目的影響。隨著經(jīng)驗(yàn)的積累,可以逐漸深入學(xué)習(xí) Python 的高級特性和更復(fù)雜的應(yīng)用場景。
二、Python基本語法
1. 變量和數(shù)據(jù)類型
# 變量賦值
x = 5
name = "John"
# 數(shù)據(jù)類型
number = 10 # 整數(shù)
float_number = 3.5 # 浮點(diǎn)數(shù)
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)循環(huán)語句
# for 循環(huán)
for item in my_list:
print(item)
# while 循環(huán)
counter = 0
while counter < 5:
print(counter)
counter += 1
3、函數(shù)
# 函數(shù)定義
def greet(name):
print("Hello, " + name + "!")
# 函數(shù)調(diào)用
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)多個(gè)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)
三、面向?qū)ο?/h3>
Python 是一種面向?qū)ο蟮木幊陶Z言。在 Python 中,幾乎一切都是對象,包括基本數(shù)據(jù)類型(如整數(shù)、浮點(diǎn)數(shù)、字符串)以及用戶自定義的類和對象。Python 支持面向?qū)ο缶幊痰暮诵母拍?,包括類、對象、封裝、繼承和多態(tài)。
1、類和對象: 在 Python 中,類是對象的模板,對象是類的實(shí)例。通過定義類,可以創(chuàng)建具有特定屬性和方法的對象。
class Dog:
def __init__(self, name):
self.name = name
def bark(self):
print(f"{self.name} is barking!")
my_dog = Dog("Buddy")
my_dog.bark()
2、封裝: 封裝允許將數(shù)據(jù)和方法封裝在類的內(nèi)部,通過對外提供公共接口來隱藏內(nèi)部實(shí)現(xiàn)的細(xì)節(jié)。
class BankAccount:
def __init__(self, balance): #構(gòu)造函數(shù)
self.balance = balance
def deposit(self, amount):
self.balance += amount
def withdraw(self, amount):
if amount <= self.balance:
self.balance -= amount
else:
print("Insufficient funds")
account = BankAccount(1000)
account.withdraw(500)
3、繼承: 繼承允許一個(gè)類繼承另一個(gè)類的屬性和方法,從而實(shí)現(xiàn)代碼的重用和擴(kuò)展。
class Animal:
def speak(self):
pass
class Dog(Animal):
def speak(self):
print("Woof!")
class Cat(Animal):
def speak(self):
print("Meow!")
my_dog = Dog()
my_dog.speak()
4、多態(tài): 多態(tài)允許不同的類共享相同的接口,但具體的實(shí)現(xiàn)可以不同。這使得代碼更靈活,能夠處理不同類型的對象。
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: 提供高性能、易用的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析工具,支持多種文件格式(如CSV、Excel)的讀寫。
2、生成報(bào)告:
Jinja2: 模板引擎,用于生成動態(tài)內(nèi)容的報(bào)告。
ReportLab: 用于創(chuàng)建PDF文檔的庫,可用于生成帶有圖表和文本的報(bào)告。
Matplotlib: 用于繪制圖表和圖形,可以在報(bào)告中插入圖表。
3、發(fā)送報(bào)告:
smtplib(內(nèi)置庫): 用于發(fā)送電子郵件,可用于將測試報(bào)告通過電子郵件發(fā)送。
yagmail: 簡化了使用smtplib發(fā)送郵件的過程,支持HTML內(nèi)容和附件。
4、測試報(bào)告框架:
HTMLTestRunner: 一個(gè)生成HTML格式測試報(bào)告的框架,適用于unittest。
pytest-html: 適用于pytest的HTML測試報(bào)告插件。
5、日志記錄:
logging(內(nèi)置庫): Python的官方日志記錄模塊,可用于在測試中記錄信息。
loguru: 提供更簡單和強(qiáng)大的日志記錄功能,支持文件、控制臺等多種輸出。
6、網(wǎng)絡(luò)請求:
requests: 用于發(fā)送HTTP請求的庫,適用于API測試。
7、通信
串口通信:serial
Can通信: python-can
import serial
# 打開串口
ser = serial.Serial('COM1', 9600, timeout=1)
# 發(fā)送數(shù)據(jù)
ser.write(b'Hello, serial!')
# 接收數(shù)據(jù)
data = ser.readline()
print('Received:', data)
# 關(guān)閉串口
ser.close()
8、其他常用庫:
NumPy: 用于科學(xué)計(jì)算和數(shù)學(xué)操作的庫。
Beautiful Soup: 用于從HTML和XML文檔中提取信息的庫。
Scrapy: 一個(gè)用于爬取網(wǎng)站數(shù)據(jù)的框架。
Flask/Django: 用于構(gòu)建Web應(yīng)用程序的框架。
五、常用的自動化測試框架
Python中有幾個(gè)常用的自動化測試框架,它們提供了各種工具和功能來簡化測試流程。以下是一些常見的Python自動化測試框架:
unittest: 這是Python內(nèi)置的測試框架,提供了測試用例、測試套件、斷言等基本測試工具。它的使用方式受到Java中JUnit的影響。
pytest: 一個(gè)功能豐富而靈活的測試框架,支持自動發(fā)現(xiàn)測試用例、參數(shù)化測試、豐富的插件系統(tǒng)等。它的語法簡潔易懂,也能與其他測試工具和框架很好地集成。
nose2: 基于unittest的擴(kuò)展,提供了更多功能和插件支持,支持測試發(fā)現(xiàn)、標(biāo)記、插件等。它的目標(biāo)是提供更好的發(fā)現(xiàn)和運(yùn)行測試的方式。
Robot Framework: 一個(gè)通用的自動化測試框架,支持關(guān)鍵字驅(qū)動和行為驅(qū)動開發(fā)。它易于學(xué)習(xí),可用于Web、移動應(yīng)用、API等測試,并支持關(guān)鍵字庫擴(kuò)展。
Behave: 一個(gè)行為驅(qū)動開發(fā)(BDD)框架,基于Gherkin語言。它結(jié)合了自然語言的表達(dá)力和Python的強(qiáng)大功能,使得測試用例更具可讀性。
Selenium: 雖然它主要用于Web應(yīng)用程序的自動化測試,但也是一個(gè)強(qiáng)大的工具。通過結(jié)合Selenium WebDriver和測試框架(如pytest或unittest),可以實(shí)現(xiàn)更復(fù)雜的Web應(yīng)用測試。
六、其它
1、元組、列表、字典、集合的區(qū)別
元組、列表、字典和集合是Python中常用的四種數(shù)據(jù)結(jié)構(gòu),它們有各自的特點(diǎn)和適用場景。
(1). 元組(Tuple):
表示方式: 使用圓括號 () 表示,例如:my_tuple = (1, 2, 3).
可變性: 不可變,一旦創(chuàng)建就不能修改。
索引訪問: 支持索引訪問,類似于列表。
適用場景: 適用于希望創(chuàng)建不可變序列的情況,例如函數(shù)返回多個(gè)值時(shí)。
(2). 列表(List):
表示方式: 使用方括號 [] 表示,例如:my_list = [1, 2, 3].
可變性: 可變,允許修改、添加或刪除元素。
索引訪問: 支持索引訪問。
適用場景: 適用于需要一個(gè)有序、可變的集合的情況,例如存儲同類型的元素。
(3). 字典(Dictionary):
表示方式: 使用花括號 {} 表示,例如:my_dict = {“key1”: “value1”, “key2”: “value2”}.
可變性: 可變,可以修改、添加或刪除鍵值對。
鍵值對: 由鍵和值組成,通過鍵來訪問值。
適用場景: 適用于需要存儲鍵值對的情況,鍵是唯一的。
(4). 集合(Set):
表示方式: 使用花括號 {} 表示,例如:my_set = {1, 2, 3}.
可變性: 可變,可以添加或刪除元素。
唯一性: 元素是唯一的,不會重復(fù)。
適用場景: 適用于需要存儲無序且唯一元素的情況,例如去重。
總體而言,選擇使用哪種數(shù)據(jù)結(jié)構(gòu)取決于你的具體需求。元組適用于不可變序列,列表適用于有序可變集合,字典適用于鍵值對存儲,集合適用于無序唯一元素的情況。
2、堆和棧的區(qū)別
堆和棧是兩個(gè)用于管理程序運(yùn)行時(shí)內(nèi)存的區(qū)域。棧用于存儲函數(shù)調(diào)用的上下文、局部變量等,而堆用于存儲動態(tài)分配的對象、數(shù)據(jù)結(jié)構(gòu)等。
內(nèi)容:
堆(Heap): 用于動態(tài)分配內(nèi)存,存儲對象、數(shù)據(jù)結(jié)構(gòu)等。在堆上分配的內(nèi)存需要手動管理,通常通過new關(guān)鍵字來分配,并由程序員負(fù)責(zé)釋放。
棧(Stack): 存儲函數(shù)調(diào)用的上下文、局部變量、函數(shù)參數(shù)等,遵循后進(jìn)先出(LIFO)原則。棧上的數(shù)據(jù)的生命周期與函數(shù)調(diào)用關(guān)聯(lián),當(dāng)函數(shù)執(zhí)行完成時(shí),棧上的數(shù)據(jù)自動被釋放。
3、構(gòu)造函數(shù)
在 Python 中,構(gòu)造函數(shù) init 在創(chuàng)建類的實(shí)例時(shí)自動被調(diào)用,用于執(zhí)行一些初始化操作。在創(chuàng)建實(shí)例時(shí),首先調(diào)用構(gòu)造函數(shù),然后再執(zhí)行其他的初始化代碼。
以下是一個(gè)簡單的示例,展示了如何在 Python 中定義和使用構(gòu)造函數(shù):
class MyClass:
# 構(gòu)造函數(shù)
def __init__(self, param1, param2):
# 在構(gòu)造函數(shù)中進(jìn)行初始化操作
self.attribute1 = param1
self.attribute2 = param2
print("Object created with attributes:", self.attribute1, self.attribute2)
# 創(chuàng)建類的實(shí)例,會自動調(diào)用構(gòu)造函數(shù)
my_object = MyClass("value1", "value2")
在 Python 中,self 是一個(gè)約定俗成的參數(shù)名稱,用于表示對象實(shí)例本身。它在類的方法中作為第一個(gè)參數(shù)傳遞,以便可以訪問和操作對象的屬性和方法。
即使沒有傳參的函數(shù),如果是類的方法,仍然需要在參數(shù)列表中保護(hù)‘self’。
4、python中 有 public private等關(guān)鍵字嗎?
在 Python 中,沒有像其他編程語言(如Java、C++)那樣明確定義的 public、private 等訪問修飾符。Python采用了一種不同的方式來處理成員的可見性和訪問權(quán)限。
在 Python 中,成員(變量或方法)的可見性主要通過命名約定來實(shí)現(xiàn)。以下是一些常見的約定:
公共成員: 通常沒有特殊的命名約定,可以直接訪問。
class MyClass:
def __init__(self):
self.public_member = 42
受保護(hù)成員: 以一個(gè)下劃線 _ 開頭,表示應(yīng)該被視為受保護(hù)的,不建議直接訪問。
class MyClass:
def __init__(self):
self._protected_member = 42
私有成員: 以兩個(gè)下劃線 __ 開頭,表示是私有的,應(yīng)該避免直接訪問。文章來源:http://www.zghlxwxcb.cn/news/detail-800022.html
class MyClass:
def __init__(self):
self.__private_member = 42
雖然可以通過以上約定來表示可見性,但在 Python 中,這只是一種約定,而不是強(qiáng)制性的規(guī)則。Python 的理念之一是“我們都是成年人”,即程序員有責(zé)任遵守這些約定,而不是通過強(qiáng)制規(guī)則來限制訪問。這也使得 Python 更加靈活和自由。文章來源地址http://www.zghlxwxcb.cn/news/detail-800022.html
到了這里,關(guān)于自動化理論基礎(chǔ)(2)—開發(fā)語言之Python的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!