[问题] 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