分享一个关于在pytest中,如何将测试用例文件中的变量传递到fixture函数。
一、交代应用场景
- 目前组内的项目,在根目录下是有一个
conftest.py
文件的,这里有个生成api token
的fixture函数,就叫它gen_token()
吧。 - 每个case包下,也会有个
conftest.py
,用于存放适用于本模块下测试用例的fixture
函数,比如有个叫setup_before()
。 - 因为拿token是请求接口的前提,所以在case里,比如有个
test_case()
里,要传顶层的fixture函数,也就是这样test_case(gen_token)
。 - 顶层的
gen_token()
,是需要3个传参的。因为不同case可能涉及到的生成不同用户的token,所以我们把这个参数放在了case文件里。
ok,大背景是这样的。
现在有小伙伴来需求了,她要在setup_before()
里去造数,通过请求另一个接口,这个请求也需要使用token。
那么,问题也就可以转化为:
- 要将case文件里的参数,传递到fixture函数中。
- gen_token()里返回的值,setup_before()和test_case()里都要拿到。
二、使用@pytest.mark.parametrize、以及fixture的调用来解决
这里把实