python 代码格式规范脚本_Python编码规范
Python自動化測試代碼編碼規(guī)范
一、適用范圍:
本規(guī)則基礎(chǔ)為Python標(biāo)準(zhǔn)PEP8,在此基礎(chǔ)上加了我司測試部編碼規(guī)范,適用于測試部所有Python腳本編寫是采用的規(guī)則.
二、編碼:
所有的 Python 腳本文件都應(yīng)在文件頭標(biāo)上 # -*- coding:utf-8 -*- 。設(shè)置編輯器,默認(rèn)保存為 utf-8 格式。
三、注釋:
?存在技術(shù)難點的代碼:
采用 # 開頭的注釋,表明為何選擇當(dāng)前實現(xiàn)以及這種實現(xiàn)的原理和難點。
?包、模塊、類、函數(shù)(方法)使用DocStrings:
文檔字符串內(nèi)部包括內(nèi)容:
包、模塊、類、函數(shù)(方法)主要目的,傳參類型以及其他需要備注內(nèi)容。
四、格式:
?縮進(jìn):
Python 依賴縮進(jìn)來確定代碼塊的層次,行首使用4個空格縮進(jìn)。
?換行:
每行最大長度79,換行可以使用反斜杠,最好使用圓括號。換行點要在操作符的后邊敲回車
五、命名:
?總體規(guī)則:
1)盡量單獨使用小寫字母‘l’,大寫字母‘O’等容易混淆的字母。
2)盡量使用全拼寫的單詞,縮寫的情況有如下兩種:
I.常用的縮寫,如 XML、ID等,在命名時也應(yīng)只大寫首字母,如:
classXmlParser(object):pass
II.命名中含有長單詞,對某個單詞進(jìn)行縮寫。這時應(yīng)使用約定成俗的縮寫方式,如去除元音、包含輔音的首字符等方式,例如:
function 縮寫為 fn
text 縮寫為 txt
object 縮寫為 obj
count 縮寫為 cnt
number 縮寫為 num,等。
?常量:
常量名所有字母大寫,由下劃線連接各個單詞。
?變量:
1)使用全部小寫的方式,可以使用下劃線。
2)全局變量盡量只在模塊內(nèi)有效。
3)__xxx__ 形式的系統(tǒng)保留字命名法,項目中也可以使用。這種形式的變量是只讀的,這種形式的類成員函數(shù)盡量不要重載。如:
class Base(object):
def __init__(self, id, parent = None):
self.__id__ = id
self.__parent__ = parent
def __message__(self, msgid): # …略
其中 __id__、__parent__ 和 __message__ 都采用了系統(tǒng)保留字命名法。
?方法:
方法命名使用全部小寫的方式,可以使用下劃線。
?類:
1)類的命名使用首字母大寫,類名已駝峰的方式,模塊內(nèi)部的類在前面加下劃線。
2)類的屬性若與關(guān)鍵字名字沖突,后綴加一下劃線,盡量不要使用縮略等其他方式。
3)類的方法第一個參數(shù)必須是self。
4)使用robotFramework時,類名必須與文件名一致。
5)每個類必須繼承object
六、語句:
?Import:
1)import 的次序,先 import Python 內(nèi)置模塊,再 import 第三方模塊,最后 import 自己開發(fā)的項目中的其它模塊;這幾種模塊中用空行分隔開來。
2)一條 import 語句 import 一個模塊。
3)當(dāng)從模塊中 import 多個對象且超過一行時,使用如下斷行法(此語法 py2.5 以上版本才支持):
from module import (obj1, obj2, obj3, obj4,obj5, obj6)
4)不要使用 from module import *。
?賦值:
對于賦值語言,主要是不要做無謂的對齊,如:
a = 1 # 這是一個行注釋
variable = 2 # 另一個行注釋
fn = callback_function # 還是行注釋
七、分支和循環(huán):
1)不要寫成一行,如:
if not flg: pass 和 for i in xrange(10): print i都不是好代碼,應(yīng)寫成
if not flg:
pass
fori in xrange(10):
print i
2)條件表達(dá)式的編寫應(yīng)該足夠 pythonic,如以下形式的條件表達(dá)式是拙劣的:
if len(alist) != 0: do_something()
if alist != []: do_something()
if s != “”: do_something()
if var != None: do_something()
if var != False: do_something()
上面的語句應(yīng)該寫成:
if seq: do_something() # 注意,這里命名也更改了
if var: do_something()
3)用得著的時候多使用循環(huán)語句的 else 分句,以簡化代碼。
?Try-except語句:
如需使用try-except語句,遵循以下格式:
try:
…
return True
except:
logger.eception(‘a(chǎn)ssssss’)
…
return False
fllay{
八、禁用語句:
在robotFramework框架中使用的自定義編寫的腳本時,禁止使用sys.exit(0)語句
七、已有代碼與第三方模塊:
1)對于項目中已有的代碼,可能因為歷史遺留原因不符合本規(guī)范,應(yīng)當(dāng)看作特例,允許存在;但不應(yīng)在新的代碼中延續(xù)舊的風(fēng)格。
2)對于第三方模塊,可能不符合本規(guī)范,也應(yīng)看作特例,允許存在;但不應(yīng)在新的代碼中使用第三方模塊的風(fēng)格。
九、自動化測試代碼開發(fā)規(guī)則
自動化用例開發(fā)我們還需遵守如下規(guī)則;
1.每次開發(fā)自動化用例前,需先從svn上update以保證為最新的工程項目.要上傳代碼,必須保證本地調(diào)試通過.Case包上傳,先使用”清理孤立的用例文件”功能清理無效用例ini文件,再用”同步用例工程”界面操作,保證上傳的case必須為最新。自動化代碼需做codereview.
2.Logic開發(fā)保證run()方法結(jié)構(gòu)如下:
public void run() throws Throwable {
// 步驟一:取得被測試程序引用
// 步驟二:獲取用例用到的變量數(shù)據(jù)
// 步驟三:得到需要用到的AW的實例
// 步驟四:調(diào)用方法
}
3.日志/打印信息使用已封裝好的Log4J方法,如下例:
private static Logger fLogger = Logger.getLogger(EPMSUtils.class);
4.每個操作點后要加上結(jié)果判斷,例子如下:
getResult().addChkPnt("創(chuàng)建所有用戶組權(quán)限用戶", TestResult.PASSED, "Create Successfully");
5.對確認(rèn)的對象等待使用$object.waitForExist();只有在不確認(rèn)或者認(rèn)為受機(jī)器性能影響處的思考時間使用RationalTestScript.sleep().
6.對可抽象的Selenium方法寫在com.tdtech.utils.SeleniumUtils 里面.公用界面AW寫在com.tdtech.commonTask 包中.
7.對可抽象的界面AW方法都寫對應(yīng)的Utils類里面,且方法說明清晰易懂.如:
com.tdtech.epms.commonTask.EPMSUtils
com.tdtech.escs.commonTask.ESCSUtils
8.測試代碼AW按照每個界面進(jìn)行分包,包名清晰易懂.如:
com.tdtech.epms.epmsDailyOffice
且每個界面AW要有對應(yīng)截圖,方便界面操作查看以及java doc生成.
9.測試包命名都使用英文字母,按照業(yè)務(wù)流規(guī)則分類, 測試用例命名可直接使用BBT用例名,用例備注中填寫此用例在TMSS上的用例ID.用例參數(shù)說明清晰明確.
10.各模塊用例開發(fā)者也需要持續(xù)維護(hù)所有負(fù)責(zé)的用例.執(zhí)行者需對失敗用例進(jìn)行初步分析,得出結(jié)論:軟件控件變化,用例邏輯錯誤,用例代碼問題.
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的python 代码格式规范脚本_Python编码规范的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 交易猫如何改价
- 下一篇: python epoll多路复用技术_p