作者:
Talent14 (Talent)
2021-03-19 14:47:13在pytest中,自定義的傳入參數想在其他python檔案使用,需要將conftest.py中接收參數的method name當作參數傳入,如程式碼中的common_method(self, test_var)
但如果common_method又會被其他python檔案中的function呼叫,該怎麼處理第一個參數呢?
EX: test_demo.py檔案中想要使用CommonModule().common_method(),會需要傳入參數test_var,但common_method中的test_var是為了接收自訂傳入參數
在類似這樣兩層呼叫的方式下,怎麼使用接收進來的參數,才能解決 TypeError: common_module() missing 1 required positional argument: 'test_var'
附上程式碼圖檔,先感謝各位高手大大
https://i.imgur.com/aqymMDO.jpg
作者:
zerof (貓橘毛發呆雕像)
2021-03-19 20:21:00你確定問題不是 method 少了個 self?
作者:
Talent14 (Talent)
2021-03-19 20:42:00抱歉,我範例漏打了,但確定補上後,test_case1(self)是不行的!抱錯的原因會顯示最後一行的common_module呼叫時缺少參數
作者:
zerof (貓橘毛發呆雕像)
2021-03-21 17:52:00??? 所以你是想把class CM 當成 fixture?
作者:
Talent14 (Talent)
2021-03-21 22:23:00我是想將pytest指令接收的參數在A method中被使用,但其他的B method也可以呼叫A method!(A method是一個共用的方法,可以讓其他method呼叫使用)以例子來說,是將test_var當作fixture, 提供給Common_Module cls的method使用,然後TestDemo cls的method會需要呼叫Common_Module cls的method
作者:
zerof (貓橘毛發呆雕像)
2021-03-22 19:03:00...如果你 CM 是 test fixture, pytest 沒有也不建議你把 fixture 綁在 class 上;如果 CM 是 test cases 的內容,放在 setup 每次 re-initial(or maybe u are looking: unittest?); 要是 CM 是待測物,那顯然你上面應該都看不懂...要不先去研究看看 test doubles?
作者:
Talent14 (Talent)
2021-03-22 19:29:00CM不是待測物,CM是我拿來做login的動作(例:輸入帳號密碼,點擊登入按鈕、檢查登入是否成功動作),但不將他當作一個test case,因為很多test case都會呼叫CM做前置動作!但是開啟的url是由pytest命令參數決定,所以有點不知道該怎麼把這些東西串接起來!目前想到另一個方式是將url參數接收進來後放到os的環境變數,在login的時候去取用!謝謝大大提供的資訊,double test我也會去研究!