日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

rf调用的python函数报错_Robot Framework(15)- 扩展关键字

發布時間:2024/1/23 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 rf调用的python函数报错_Robot Framework(15)- 扩展关键字 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如果你還想從頭學起Robot Framework,可以看看這個系列的文章哦!

前言

什么是擴展關鍵字?就是你自己寫的 Python 文件,里面包含了函數或者類

然后 RF 導入這個 Python 模塊,就可以調用函數或者類方法,它們就是擴展關鍵字

Python 模塊作為測試庫

模塊文件名作為測試庫的名字

比如:Python 模塊名叫 MyLibrary,文件名是 MyLibrary.py,那么測試庫的名字就叫做 MyLibrary

Python 模塊和 Robot 文件同目錄下的栗子

這是目錄結構哈

python 模塊的代碼

defreturnlist():return [i for i in range(10)]defreturn_dict():return {"a": "hahhahahaahah"}#以下劃線開頭的函數不能作為RF關鍵字

def_returnlist2():return [1, 2]

robot 代碼

進入test目錄下,運行以下命令

robot -P . test.robot

執行結果

知識點

_前綴的方法不會作為關鍵字,在Python里面,?_?開頭的方法是私有方法,RF 不會識別到它

Python 方法作為關鍵字也是大小寫不敏感的

RF 中會把關鍵字的?_?和單個空格忽略掉,所以?returndict、return dict、return_dict?都是調用同一個關鍵字

Python 類作為測試庫的栗子

項目目錄

所有 Python 測試代碼都在?tlib2.py?里面哦

最終運行是在【15_擴展關鍵字】目錄下運行的,命令如下

robot -P . testrf

栗子一:類初始化不需要傳參

python 代碼

classSubLibrary:def __init__(self):pass

defreturnint(self):return 2020

def_returnint2(self):return 4

robot 代碼

測試結果

知識點

在類里面,?_?前綴的方法不會當做關鍵字

同樣,類中聲明的方法當做關鍵字的話,大小寫不敏感

栗子二:類初始化需要傳參

python 代碼

from robot.api importloggerclassSubLibrary2:def __init__(self, host, port, table='test'):

self.host=host

self.port=port

self.table=tabledefprintaddr2(self):

logger.console('host:%s,port:%s,table:%s' % (self.host, self.port, self.table))

robot 代碼

測試結果

知識點

如果類的?__init__?初始化方法需要傳參,則在導入庫后面跟對應的參數列表

拓展 Python 知識點:先有類對象,還是先執行類初始化方法?

__new__?方法產生對象

__init__?對象的初始化方法

先 new 一個對象,再 init 一個對象

栗子三:類名和模塊名相同

python 代碼

from robot.api importloggerclasstlib2:def __init__(self, host, port):

self.host=host

self.port=portdefprintaddr(self):

logger.console('host:%s,port:%s' % (self.host, self.port))

robot 代碼

測試結果

知識點

如果類名和模塊名相同,可以不用導入類名

栗子四:使用路徑法導入 Python 模塊

Python 代碼用的還是栗子三的

robot 代碼

測試結果

知識點

如果用路徑法,需要注意導入 Python 模塊需要有文件后綴哦,且用?/?來表示目錄下

重點:使用路徑法,只能導入和模塊名相同的類名!

Python 擴展庫的搜索規則

統一的規則

先根據 robot 文件自身當前目錄下查找庫文件

如果沒有找到則再根據?--pythonpath?和?-P?提供的搜索路徑進行搜索

最后找 Python 安裝的路徑

Python 庫引入了其他模塊

背景

當 robot 文件導入的 Python 測試庫引入了其他模塊時,應該怎么寫導入路徑?

正確寫法

確保導入的模塊路徑和RF導入的模塊起始路徑統一

看栗子

testother.robot??導入?test.py?模塊,?test.py? 模塊引入了?login.py?模塊的方法

目錄結構

login.py 代碼

from robot.api importloggerdeflogin_test():

logger.console('test login')

test.py 代碼

from pylib.login importlogin_test#from login import login_test 報錯

deftest():

login_test()

robot 的代碼

在 othertest 目錄下運行下面命令

robot -P . testother.robot

測試結果

結論

可以看到?robot?文件引入的路徑是?pylib?開頭,?test?模塊引入?login?模塊的路徑也是?pylib?開頭

如果路徑是?login?開頭導入,那么運行robot文件將會報錯(如下圖,包含了解析錯誤)

Python 庫中的 class 存在繼承

背景

當 robot 文件導入 Python 測試庫的類繼承了另一個類,應該怎么寫導入路徑?

正確寫法

確保導入的模塊路徑和RF導入的模塊起始路徑統一

使用的時候 RF 文件只需導入子類即可

看栗子

test.robot?引入了?other.py? 模塊下的?Child?類,而?Child?類繼承了?Base.py?模塊下的?Father?類

目錄結構

base.py 的代碼

from robot.libraries.BuiltIn importloggerclassFather:def __init__(self):

logger.console('init Father')defmoney(self):return '$10000'

other.py 的代碼

from robot.api importloggerfrom pylib.Base importFatherclassChild(Father):def __init__(self):

Father.__init__(self)

logger.console('init Child')defuse_money(self):returnself.money()defmake_money(self):return '$9999'

robot 的代碼

在 testClass 目錄下運行下面命令

robot -P . test.robot

測試結果

文章來源: www.cnblogs.com,作者:小菠蘿測試筆記,版權歸原作者所有,如需轉載,請聯系作者。

原文鏈接:https://www.cnblogs.com/poloyy/p/12989402.html

總結

以上是生活随笔為你收集整理的rf调用的python函数报错_Robot Framework(15)- 扩展关键字的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。