[問題] pytest多層呼叫時,missing 1 required p

作者: 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:00
CM不是待測物,CM是我拿來做login的動作(例:輸入帳號密碼,點擊登入按鈕、檢查登入是否成功動作),但不將他當作一個test case,因為很多test case都會呼叫CM做前置動作!但是開啟的url是由pytest命令參數決定,所以有點不知道該怎麼把這些東西串接起來!目前想到另一個方式是將url參數接收進來後放到os的環境變數,在login的時候去取用!謝謝大大提供的資訊,double test我也會去研究!

Links booklink

Contact Us: admin [ a t ] ucptt.com