fixture 调用函数名传参(转载)

conftest.py
@pytest.fixture(scope="class")
def init_login():
    login_data = {"phone": tel, "country_code": 86, "password": "Pass123456", "device": "huawei",
                  "push_token": "0869381037778028300002104600CN01"}
    login_res = HttpRequest.http_request("http://www.baidu.com/api/user/login/by_password", login_data,
                                         "post")
    print(login_res.json())
    token = login_res.json()['data']['token']
    print(token)
    headers = {'Hoo-Agent': "a/2.3.5/8.0.0/HUAWEI_ANE-AL00/wifi/baidu",
                   "Content-type": "application/json",
               'Authorization': "Token " + token}
    print("headers", headers)
    yield (token)  ##  yield 后跟一个参数,或者不跟参数
    print("结束测试")

@ 测试类

@pytest.mark.usefixtures("init_login")
class TestOpenAPI():
   
    @pytest.mark.usefixtures("init_login")
    def test_freeze(self, init_login):
        print(init_login)  # 返回的是token的值,如果此时用init_login[0],返回的是token字符串的第一个字符

注意红色部分:

  1. 如果 yield 后跟一个参数,或者不跟参数,在测试类中 返回的是token的值,如果此时用init_login[0],返回的是token字符串的第一个字符
  2. 如果yield 后多个参数,测试测试类中,init_login 返回的是一个元组(或者列表,根据自己的设计),init_login[0],返回的是元组中的第一个元素。

参考此链接:https://www.cnblogs.com/zzllovehappy/p/10839151.html

原文地址:https://www.cnblogs.com/hghua/p/13149532.html