1. 程式人生 > >自動化測試第五節-模塊

自動化測試第五節-模塊

元素 split app 循環 rmdir seek 自己的 作業 後綴

1、模塊:
一個模塊就是一個python文件,一個python文件也叫做一個模塊

常量:常量我們一般用全部大寫字母來定義,如:USER_FILE=‘user.txt‘

1、標準模塊、標準包,即python自帶的模塊,如:import time,random,string

2、第三方模塊:別人寫好的模塊,使用時需要先安裝才能導入
1)在cmd下執行:pip install XXXX
#在python3中時自帶的,Python2下需要手動安裝
2)手動安裝,從模塊的目錄下進入cmd,執行python setup.py install
3)直接從pycharm下安裝
import xpinyin
name=‘王俊熹‘
s=xpinyin.Pinyin()
print(s.get_pinyin(name))

3、自己寫的python文件

#import的實質就是把要導入的python文件全部執行了一遍
import login#import後面是要導入的模塊名,即Python文件的名稱,不需要加文件後綴
res=login.login_info()#調用模塊下的函數時,格式為:模塊名.函數名
# 1)import在取尋找python的時候:1、先從當前目錄找 2、再從環境變量中找(Python自己的環境變量)
# 2)from 模塊名 import 函數名 as test(as表示起別名):只導入模塊的其中一個函數
from login import login_info
例子:
import sys
# print(sys.path)#查看當前有那些目錄在python的環境變量裏面

sys.path.append(r‘E:\pythonfile\fourth-class\作業‘)#r表示原字符,將python文件的目錄臨時添加到python的環境變量中,執行完畢後消失
import isfloat#將Python文件放入環境變量後就可以導入
isfloat.isfloat(9)

sys.path.insert(0,r‘E:\pythonfile\fourth-class\作業‘)#導入到列表的首位,當不同的環境變量中有相同的文件名時,優先取環境變量列表下標靠前的路徑
import isfloat#isfloat.py在多個環境變量中存在
print(isfloat.isfloat(9))

import test#執行結果是:test(即test模塊的文件名,test文件內容中放入代碼print(__name__))
print(__name__)#執行結果是:__main__
#1、python文件自己運行的時候__name__是__main__
#2、其他python文件裏面導入另一個python文件時,那麽那個python的__name__變成了導入的哪個python文件名

例子,模塊文件中的內容如下:
def coon_mysql(host,port,passwd,user,db):
print(host,port,passwd,user,db)
if __name__ == ‘__main__‘:#別人在導入的時候不會走到這個if下的代碼,只會執行這個if上面的代碼
coon_mysql(‘1.1.1.1‘,233,123456,‘wxc‘,‘mysql‘)#測試代碼
coon_mysql(‘1.1.1.1‘,234,654321,‘nina‘,‘mysql‘)#測試代碼


2、添加斷點
點擊代碼行最左側,可以打斷點,方便調試代碼



3、常用模塊
參考:http://www.nnzhp.cn/archives/150
os模塊
import os
print(os.getcwd()) # 取當前工作目錄--常用
print(os.mkdir("test1")) # 創建文件夾--常用
print(os.rmdir("test1")) # 刪除指定的文件夾,只能刪除空文件夾--常用
print(os.remove("log.log")) # 刪除文件,不能刪除文件夾--常用
print(os.listdir(‘.‘)) # 列出一個目錄下的所有文件--常用
os.rename("test", "test1") # 重命名--常用
print(os.linesep)# 當前操作系統的換行符
print(os.sep) # 當前操作系統的路徑分隔符--常用
print(os.path.abspath(__file__)) # 獲取絕對路徑--常用
print(os.path.split("/usr/hehe/hehe.txt")) # 分割路徑和文件名,生成一個元組--常用
print(os.path.dirname("/usr/local")) # 獲取父目錄--常用
print(os.path.exists("/pythonfile/five-class")) # 目錄/文件是否存在--常用
print(os.path.isfile("/usr/local")) # 判斷是否是一個文件--常用
print(os.path.isdir("/pythonfile/five-class")) # 是否是一個路徑--常用
print(os.path.join("/root", ‘hehe‘, ‘a.sql‘)) # 拼接成一個路徑--常用


例子:
d={}
print(‘%s‘%os.linesep) # 當前操作系統的換行符
d[‘hh‘]=os.linesep
print(d)

4、深拷貝和淺拷貝
#exc exc sss
a=b=c=‘exc‘#三個內存地址,字符串是不可變的
c=‘sss‘
print(a,b,c)

a=b=c=(‘exc‘)
c=(‘sss‘)
print(a,b,c)

#深拷貝和淺拷貝...
#[‘wxc‘, ‘222‘] [‘wxc‘, ‘222‘] [‘wxc‘, ‘222‘]----淺拷貝,a和b互相影響
a=b=c=[‘wxc‘]#同一個內存地址,列表是可變的
c.append(‘222‘)
print(a,b,c)
print(id(a),id(b))

#[13, [4, 5, 6, 7]] [13, [4, 5, 6]]
import copy#------深拷貝,a和b互不影響
a=[13,[4,5,6]]
b=a
b=copy.deepcopy(a)---深拷貝
# b=copy.copy(a)---淺拷貝
a[-1].append(7)
print(a,b)
print(id(a),id(b))

#[‘wxc‘] [‘wxc‘] [‘222‘]
a=b=c=[‘wxc‘]#c重新賦值了,內存地址改變了,但是a和b的內存地址沒有變
c=[‘222‘]
print(a,b,c)

5、三元運算符
a=5
b=4
c=a if a>b else b
#等同於
if a>b:
c=a
else:
c=b
6:練習程序例子
1)打印出包含數字字母的字符串
#1\替換特殊字符為固定字符replace
#2\按照這個固定字符分割字符串split
#3\循環list,判斷list裏面每個元素是否包含字母和數字
#4\判斷長度,最長的留下,打印
#5\用2個list,一個
import string
def long(st):
a=string.punctuation
for i in a:
if i in st:
st=st.replace(i,‘,‘)
st=st.split(‘,‘)
new_st=[]
len_st=[]
for i in st:
# if set(i) & set(string.ascii_letters) and set(i) & set(string.digits):
# new_st.append(i)
i=i.strip()
if not i.isdigit() and not i.isalpha() and len(i)>0:
new_st.append(i)
len_st.append(len(i))
max_len=max(len_st)#先找到最大的長度
max_len_count=len_st.count(max_len)
if max_len_count>1:
for l in range(len(len_st)):
if len_st[l]==max_len:
print(‘最長長度的字符串是%s,最長的長度是%s‘ % (new_st[l], max_len))
else:
index = len_st.index(max_len) # 再找這個長度的下標
st = new_st[index] # 最長字符串,最長字符串的下標和最大長度的下標相同
print(‘最長長度的字符串是%s,最長的長度是%s‘%(st,max_len))
long(‘$sd1#111$svda123!svda143!!221&eSSDSDG‘)

2)打印進度條:
import time
for i in range(10):
time.sleep(1)
print(‘#‘,end=‘‘,flush=True)#end表示以什麽結尾,默認是換行符,flush表示立即寫入,不用等程序結束後一起打印
3)文件讀寫:
def op_file(file_name,content=None):#文件讀寫
f = open(file_name, ‘a+‘)
f.seek(0)
if content:
f.truncate()
f.write(str(content))
f.flush()
res = None
else:
res = eval(f.read())
f.close()
return res
 




 

自動化測試第五節-模塊