python 代码格式规范脚本_Python编码规范

Python自动化测试代码编码规范

一、适用范围:

本规则基础为Python标准PEP8,在此基础上加了我司测试部编码规范,适用于测试部所有Python脚本编写是采用的规则.

二、编码:

所有的 Python 脚本文件都应在文件头标上 # -*- coding:utf-8 -*- 。设置编辑器,默认保存为 utf-8 格式。

三、注释:

存在技术难点的代码:

采用 # 开头的注释,表明为何选择当前实现以及这种实现的原理和难点。

包、模块、类、函数(方法)使用DocStrings:

文档字符串内部包括内容:

包、模块、类、函数(方法)主要目的,传参类型以及其他需要备注内容。

四、格式:

缩进:

Python 依赖缩进来确定代码块的层次,行首使用4个空格缩进。

换行:

每行最大长度79,换行可以使用反斜杠,最好使用圆括号。换行点要在操作符的后边敲回车

五、命名:

总体规则:

1)尽量单独使用小写字母‘l’,大写字母‘O’等容易混淆的字母。

2)尽量使用全拼写的单词,缩写的情况有如下两种:

I.常用的缩写,如 XML、ID等,在命名时也应只大写首字母,如:

classXmlParser(object):pass

II.命名中含有长单词,对某个单词进行缩写。这时应使用约定成俗的缩写方式,如去除元音、包含辅音的首字符等方式,例如:

function 缩写为 fn

text 缩写为 txt

object 缩写为 obj

count 缩写为 cnt

number 缩写为 num,等。

常量:

常量名所有字母大写,由下划线连接各个单词。

变量:

1)使用全部小写的方式,可以使用下划线。

2)全局变量尽量只在模块内有效。

3)__xxx__ 形式的系统保留字命名法,项目中也可以使用。这种形式的变量是只读的,这种形式的类成员函数尽量不要重载。如:

class Base(object):

def __init__(self, id, parent = None):

self.__id__ = id

self.__parent__ = parent

def __message__(self, msgid): # …略

其中 __id__、__parent__ 和 __message__ 都采用了系统保留字命名法。

方法:

方法命名使用全部小写的方式,可以使用下划线。

类:

1)类的命名使用首字母大写,类名已驼峰的方式,模块内部的类在前面加下划线。

2)类的属性若与关键字名字冲突,后缀加一下划线,尽量不要使用缩略等其他方式。

3)类的方法第一个参数必须是self。

4)使用robotFramework时,类名必须与文件名一致。

5)每个类必须继承object

六、语句:

Import:

1)import 的次序,先 import Python 内置模块,再 import 第三方模块,最后 import 自己开发的项目中的其它模块;这几种模块中用空行分隔开来。

2)一条 import 语句 import 一个模块。

3)当从模块中 import 多个对象且超过一行时,使用如下断行法(此语法 py2.5 以上版本才支持):

from module import (obj1, obj2, obj3, obj4,obj5, obj6)

4)不要使用 from module import *。

赋值:

对于赋值语言,主要是不要做无谓的对齐,如:

a = 1 # 这是一个行注释

variable = 2 # 另一个行注释

fn = callback_function # 还是行注释

七、分支和循环:

1)不要写成一行,如:

if not flg: pass 和 for i in xrange(10): print i都不是好代码,应写成

if not flg:

pass

fori in xrange(10):

print i

2)条件表达式的编写应该足够 pythonic,如以下形式的条件表达式是拙劣的:

if len(alist) != 0: do_something()

if alist != []: do_something()

if s != “”: do_something()

if var != None: do_something()

if var != False: do_something()

上面的语句应该写成:

if seq: do_something() # 注意,这里命名也更改了

if var: do_something()

3)用得着的时候多使用循环语句的 else 分句,以简化代码。

Try-except语句:

如需使用try-except语句,遵循以下格式:

try:

return True

except:

logger.eception(‘assssss’)

return False

fllay{

八、禁用语句:

在robotFramework框架中使用的自定义编写的脚本时,禁止使用sys.exit(0)语句

七、已有代码与第三方模块:

1)对于项目中已有的代码,可能因为历史遗留原因不符合本规范,应当看作特例,允许存在;但不应在新的代码中延续旧的风格。

2)对于第三方模块,可能不符合本规范,也应看作特例,允许存在;但不应在新的代码中使用第三方模块的风格。

九、自动化测试代码开发规则

自动化用例开发我们还需遵守如下规则;

1.每次开发自动化用例前,需先从svn上update以保证为最新的工程项目.要上传代码,必须保证本地调试通过.Case包上传,先使用”清理孤立的用例文件”功能清理无效用例ini文件,再用”同步用例工程”界面操作,保证上传的case必须为最新。自动化代码需做codereview.

2.Logic开发保证run()方法结构如下:

public void run() throws Throwable {

// 步骤一:取得被测试程序引用

// 步骤二:获取用例用到的变量数据

// 步骤三:得到需要用到的AW的实例

// 步骤四:调用方法

}

3.日志/打印信息使用已封装好的Log4J方法,如下例:

private static Logger fLogger = Logger.getLogger(EPMSUtils.class);

4.每个操作点后要加上结果判断,例子如下:

getResult().addChkPnt("创建所有用户组权限用户", TestResult.PASSED, "Create Successfully");

5.对确认的对象等待使用$object.waitForExist();只有在不确认或者认为受机器性能影响处的思考时间使用RationalTestScript.sleep().

6.对可抽象的Selenium方法写在com.tdtech.utils.SeleniumUtils 里面.公用界面AW写在com.tdtech.commonTask 包中.

7.对可抽象的界面AW方法都写对应的Utils类里面,且方法说明清晰易懂.如:

com.tdtech.epms.commonTask.EPMSUtils

com.tdtech.escs.commonTask.ESCSUtils

8.测试代码AW按照每个界面进行分包,包名清晰易懂.如:

com.tdtech.epms.epmsDailyOffice

且每个界面AW要有对应截图,方便界面操作查看以及java doc生成.

9.测试包命名都使用英文字母,按照业务流规则分类, 测试用例命名可直接使用BBT用例名,用例备注中填写此用例在TMSS上的用例ID.用例参数说明清晰明确.

10.各模块用例开发者也需要持续维护所有负责的用例.执行者需对失败用例进行初步分析,得出结论:软件控件变化,用例逻辑错误,用例代码问题.

你可能感兴趣的:(python,代码格式规范脚本)