python自动化0基础学习_从零学习基于Python的RobotFramework自动化

从零学习基于Python的RobotFramework自动化

一、Python基础

1)      版本差异

版本

编码

语法

其他

2.X

ASCII

try:

raise TypeError, 类型错误"

except TypeError, err:

print err.message

……

3.X

UTF-8

try:

raise TypeError("类型错误")

except TypeError as err:

print(err)

去除不等于<>

去除long类型

新增bytes类型

2)      输入输出

text = input('Enter any content :') #输入

print("Your input content is : %s" % text) #输出

=============== C:\Python37\python.exe E: /TestScript.py ======================Enter any content : who am I.

Your input contentis : who am I.

____________________________________________________________________________________________

3)      分支循环

for i in range(10): #range(start, stop[, step])

if i % 2 ==0:print(i, end=' ')=============== C:\Python37\python.exe E: /TestScript.py ======================02 4 6 8

____________________________________________________________________________________________

4)      数据类型

a = 123 #整型 int()

b= '123' #字符串 str()

c= [1, 2, 3] #列表 list()

d= (1, 2, 3) #元组 tuple()

e= {1, 2, 3} #集合 set()

f= {'aa': 1, 'bb': 2} #字典 dict()

注意:

字符串、列表、元组均可以通过索引获取值,以及截取部分。例如:a[0] >>> 1,b[1:-]>>> '2'。

整型、字符串、元组数据不可变; 集合是无序唯一的; 字典中key必须唯一且与value成对。

____________________________________________________________________________________________

5)      函数方法

class Operation(): #类定义

def add(self, a, b): #方法定义

return a + b #返回结果

opt= Operation() #实例化类

print(opt.add(3, 5)) #调用类方法

=============== C:\Python37\python.exe E: /TestScript.py ======================

8

____________________________________________________________________________________________

6)      模块导入

from robot.api importloggerimport configparser

____________________________________________________________________________________________

7)      异常报错

²   KeyboardInterrupt Ctrl+C被按下

²   AttributeError 试图访问对象没有的属性(比如foo没有属性x,却试图访问foo.x)

²   IOError 输入/输出异常(一般是无法打开文件)

²   ImportError 无法引入模块或包(一般是名称或路径错误,或者是无此第三方包)

²   IndentationError 语法错误(一般是代码没有正确对齐)

²   SyntaxError代码非法,代码不能编译(一般是语法错误,写错了)

²   NameError 使用一个还未被赋予对象的变量

²   IndexError 下标索引超出序列边界,(比如f只有3个元素,却试图访问f[5])

²   TypeError 传入对象类型与要求的不符合

²   KeyError 试图访问字典里不存在的键

²   ValueError 传入一个调用者不期望的值

二、RobotFramework基础

1)      版本差异

版本

安装

支持

运行

其他

1.5.X之前

wxPython2.8.x

Pyhton2.x

pybat

robot

jybot

……

1.7.X之后

wxPython4.0.x

Pyhton2.x

Pyhton3.x

robot

jybot

custom script

新增debug模式

Edit新增字体色

Grid新增json校验

2)

输入输出

Import Library Dialogs

${username}=Get Value From User Input user name default

Log ${username}=======================================================

20190724 12:37:36.010 : INFO : ${username} =zhangsir20190724 12:37:36.010 : INFO : zhangsir

_________________________________________________________________________________

3)      分支循环

FOR ${i} IN RANGE 5Run Keyword If ${i}%2==0 Log ${i}

END=======================================================

20190724 12:51:55.658: INFO : 020190724 12:51:55.658 : INFO : 2

20190724 12:51:55.658 : INFO : 4

________________________________________________________________________________

4)      数据类型

${a}= Set Variable ${123}

${b}= Set Variable 123@{c}= Create List 1 2 3

&{d}= Create Dictionary aa=1 bb=2 cc=3

=======================================================

20190724 13:44:11.701 : INFO : ${a} = 123

20190724 13:44:11.717 : INFO : ${b} = 123

20190724 13:44:11.717 : INFO : @{c} = [ 1 | 2 | 3]20190724 13:44:11.717 : INFO : &{d} = { aa=1 | bb=2 | cc=3}20190724 13:44:11.717 : INFO : 123

20190724 13:44:11.717 : INFO : 123

20190724 13:44:11.717 : INFO : ['1', '2', '3']20190724 13:44:11.717 : INFO : {'aa': '1', 'bb': '2', 'cc': '3'}

________________________________________________________________________________

5)      函数方法

*** Keywords ***Library MyLibrary*** Keywords ***Query Redis String

[Arguments] ${key} ${db}=8${conn} Connected To Redis ${db}

${result} Get From Redis ${conn} ${key}

[Return] ${result}

________________________________________________________________________________

6)      模块导入

Import Library MyLibrary

Import Resource BasicResource.robot

Import Variables ${adultCode}

________________________________________________________________________________

7)      异常报错

=======================================================

20190724 14:08:07.692 : INFO : 123

20190724 14:08:07.692: FAIL :

Replacing variablesfrom setting 'Variables' failed: Variable '${test}' notfound. Did you mean:

${TEST_TAGS}

${TEST_NAME}20190724 14:08:07.692: DEBUG :

Traceback (most recent call last):

None

三、RobotFramework常用关键字

1)      Evaluate关键字

以Python模式计算指定的表达式并返回结果。

${random} =   Evaluaterandom.randint(0, sys.maxint)      modules=random, sys

2)      Should系列关键字

用于判断校验测试结果。

Should Be Empty:如果指定对象不为空则失败(反之Should Not …)。

Should Be Equal:如果指定对象不相等则失败(反之Should Not …)。

Should Be True:如果指定条件不成立则失败(反之Should Not …)。

Should Contain:如果指定对象不包含则失败(反之Should Not …)。

……

3)      Convert系列关键字

用于数据的类型转换。

Convert To Integer:将指定项转换为整数。

Convert To Number:将指定项转换为浮点数。

Convert To String:将指定项转换为unicode字符串。

……

4)      Run Keyword系列关键字

根据判断条件的真假执行关键字

Run Keyword If:如果条件为真,则使用指定的参数运行指定的关键字。

Run Keyword Unless:如果条件为假,则使用指定的参数运行指定的关键字。

Run Keyword:使用指定的参数执行指定的关键字。

Run Keywords:按顺序执行所有指定的关键字(使用AND连接)。

……

5)      Get系列关键字

根据关键字作用获取值。

Get Count:返回item1中出现item2的次数。

Get Length:返回指定项的长度。

Get Time:返回指定格式时间。

……

6)      Set系列关键字

设置参数或变量。

Set Variable:设置变量。

Set Variable If:根据指定条件设置变量。

Set Log Level:设置日志登记。

……

7)      其他关键字

Sleep:强制休眠指定时间(秒)。

Catenate:连接多个字符串(默认有空格)。

Call Method:使用提供的参数调用指定对象的方法。

Exit For Loop If:如果条件为真,则结束FOR循环。

四、RobotFramework安装

1)      安装Python3.x

首先运行python-3.7.3-amd64.exe,勾选“Add Path…”,最好选择自定义安装在根目录。

然后打开DOS命令窗口,分别输入python --version和pip –version,显示对应判断则安装成功。

2)      安装相关模块

pip install redis

pip install pysolr

pip install pymysql

pip install robotframework

pip install robotframework-ride

pip install robotframework-requests  # 用于接口测试

pip install robotframework-databaselibrary  # 用于数据库测试

3)      自定义库管理

把自定义文件包放到Python目录下Lib/site-packages即可。

4)      常见错误处理

运行RF3.X报错,提示信息“python2.x调用失败”?

这是由于你之前安装过RF2.X,切换到RF3.X后数据文件未清除导致。

请在系统盘搜索librarykeywords.db文件并删除(AppData\Roaming\RobotFramework\ride),重启RIDE。

运行RF3.X报错,提示信息“找不到pybat”?

这是因为RF3.X去除了pybat模式,合并到了robot模式。请更改执行模式为robot,并更改用例文件格式为.robot。

五、日期时间处理

1)      日期格式

l   常见形式: 2019-07-20 18:45:18(格式化"%Y-%m-%d %H:%M:%S")

l   Solr库: 2019-07-20T18:45:18Z(格式化"%Y-%m-%dT%H:%M:%SZ")

l   Redis库: Jul 7, 2019 6:45:18 PM(格式化"%b %d, %Y %I:%M:%S %p")

l   MySQL库: datetime.datetime(2019, 7, 20, 18, 45, 18)

l   含毫秒: 2019-07-20 18:45:18.000(格式化"%Y-%m-%d %H:%M:%S.%f")

l   时间戳: 1564453476000

l   其他: 20190720184518(格式化"%Y%m%d%H%M%S")

2)      处理方法

※  Convert Date:转换日期格式,可指定输入输出格式(epoch表示时间戳)。

参数:

date: 日期字符串

result_format: 返回的日期格式,

exclude_millis: 是否舍去毫秒

date_format: 格式化的日期格式

示例:

| Convert Date   |   2014-05-28 12:05:03.111 |  result_format=epoch           |  #返回'1401267903.111'   |

| Convert Date |   Jul 7, 2019 6:45:18 PM  |  date_format=%b %d, %Y %I:%M:%S %p  |  #返回'2014-05-28 12:05:03'|

※  Get Current Date:获取当前日期时间,可指定输出格式。

参数:

time_zone:获取此时区的当前时间(目前仅支持本地和UTC)

increment:设置返回日期时间增量,可为负数

result_format:返回日期的格式。

exclude_millis:是否舍去毫秒

示例:

|  Get Current Date |   result_format=%Y-%m-%d |         #返回当天日期    |

六、JSON处理

1)     标准格式

{

"key1": {

"key2": 123,

"key3": "123",

"key4": [1, 2, 3],

"key5": {"key": "value"}

},

"key6": true,

"key7": null

}

2)     处理方法

※  Get Json Value:获取JSON中指定目标节点值。

参数:

json_string:JSON文档

json_pointer:JSON节点

示例:

| ${result}=        | Get Json Value   | {"foo": {"bar": [1,2,3]}}      | /foo/bar |

| Should Be Equal | ${result}         | [1, 2, 3]                  |

※  Set Json Value:设置JSON中指定目标节点值。

参数:

json_string:JSON文档

json_pointer:JSON节点

json_value:JSON值

示例:

| ${result}=        | Set Json Value      | {"foo": {"bar": [1,2,3]}}      | /foo | 123 |

| Should Be Equal  | ${result}             | {"foo": 123}              |

七、Jenkins集成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值