在整理新的web自動化測試框架的時候,遇到乙個問題,定義的關鍵字函式,是在webkeyword
類中,然後用例使用excel
管理,取出來關鍵字一列,然後通過這個關鍵字去呼叫webkeyword
類中的關鍵字方法,因為呼叫類中的例項方法,必須要使用物件.例項方法
的形式呼叫,所以eval()
函式在此就無法使用,只能換一種方式,經過查閱資料得知,可以使用operator
模組下的methodcaller
方法解決這個問題,下面簡單介紹下此方法的用法。
1. 導包
from operator import methodcaller
2. 呼叫無參的例項方法methodcaller(
"函式名"
)(類物件)
示例:
from operator import methodcaller
classa:
defeat
(self)
:return
"吃東西"
a = a(
)result = methodcaller(
"eat"
)(a)
print
(result)
執行結果:3.呼叫有參的例項方法
# 單個引數
methodcaller(
"函式名"
,"引數"
)(類物件)
# 多個引數
methodcaller(
"函式名"
,"引數1"
,"引數2"
,"引數n"
)(類物件)
# or 通過解包進行傳遞引數
list=[
"引數1"
,"引數2"
,"引數n"
]methodcaller(
"函式名",*
list
)(類物件)
示例(就以我實際的用法展示):關鍵字類webkeyword
:
class
webkeyword
:def
openbrowser
(self, browser_type)
:print
("開啟{}瀏覽器"
.format
(browser_type)
)
測試用例類
import pytest
from
.webkeyword import webkeyword
from operator import methodcaller
# excel讀取的資料
excel_data =[[
1,"開啟谷歌瀏覽器"
,"openbrowser"
,"chrome"],
[2,"打**狐瀏覽器"
,"openbrowser"
,"firefox"],
[3,"開啟ie瀏覽器"
,"openbrowser"
,"ie"]]
# 初始化關鍵字類
kw = webkeyword(
)@pytest.mark.parametrize(
"case"
, excel_data)
deftest
(case)
:# 獲取關鍵字
keyword = case[2]
# 獲取引數
param = case[3]
# 使用methodcaller呼叫關鍵字
methodcaller(keyword, param)
(kw)
執行結果:
【完】
python筆記三 使用字串
1 所有序列操作 索引 分片 乘法 判斷成員資格 求長度 取最小值和最大值 對字串同樣適用,但是字串是不可變的,不能對字串的內容進行修改。2 對於賦值的字串引數陣列,一般使用元組來儲存,例如下面的values formats hello,s.s enoughfor ya values world h...
python 基礎3 使用字串
format hello s how are s s的部分成為轉化說明符,標記了需要插入的位置,s表示值會被格式化為字串 value world you print format value 使用元組 hello world how are you format i am 2f kg 格式化為兩位數...
python學習2 使用字串
字串 所有標準的額序列操作 索引,分片,乘法,判斷成員資格,求長度,最大最小值 對字串都適用,但,字串是不可變的 a my name is hahaahh a 3 sdsd traceback most recent call last file line 1,in a 3 sdsd typeerr...