Python使用字串的方式呼叫類的例項方法

2021-10-10 09:32:34 字數 2165 閱讀 3007

在整理新的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...