我如何在另一种方法中使用一种方法的价值。我收到AttributeError:“ A”对象没有属性“ auth_header”

时间:2018-07-17 09:47:19

标签: python python-unittest

这是我的代码(单个A类)

class A(page):

   def test_auth(self):
       params = {
           'email': 'zzzm',
           'password': 'yyyy',
       }

       response = self.send_request(self.request_auth,
                                         request_type=self.request_type_post,
                                         headers=self.header_content_type_x_www_form_urlencoded,
                                         data=params,
                                         need_headers=True)

       auth_header = {'Authorization': f"Bearer {response['headers']['x-api-token']}"}

使用上述生成的身份验证代码获取个人资料的方法

def test_profile(self):
    auth_header = self.auth_header
    response = self.send_request(self.request_profile,
                                         auth=auth_header,
                                         headers=self.header_accept_json
                                         )

我得到的错误AttributeError:'A'对象没有属性'auth_header'

有人可以帮助我如何在同一个类的另一个方法中使用第一个方法生成的值吗?还是有更好的方法呢?

1 个答案:

答案 0 :(得分:0)

您可以做类似的事情-

class A(page):

    def test_auth(self):
        params = {
            'email': 'zzzm',
            'password': 'yyyy',
        }

        response = self.send_request(self.request_auth,
                                     request_type=self.request_type_post,                                         
        headers=self.header_content_type_x_www_form_urlencoded,
                                     data=params,
                                     need_headers=True)
        auth_header = {'Authorization': f"Bearer {response['headers']['x-api-token']}"}
        return auth_header


    def test_profile(self):
        auth_header = self.test_auth()
        response = self.send_request(self.request_profile,
                                     auth=auth_header,
                                     headers=self.header_accept_json
                                     )

或将内容放入-

class A(page):
    def test_auth(self):
        params = {
            'email': 'zzzm',
            'password': 'yyyy',
        }

        response = self.send_request(self.request_auth,
                                     request_type=self.request_type_post,                                         
        headers=self.header_content_type_x_www_form_urlencoded,
                                     data=params,
                                     need_headers=True)
        auth_header = {'Authorization': f"Bearer {response['headers']['x-api-token']}"}
        return auth_header

    def __init__(self, page):
        self.auth_header = self.test_auth()


    def test_profile(self):
        auth_header = self.auth_header
        response = self.send_request(self.request_profile,
                                     auth=auth_header,
                                     headers=self.header_accept_json
                                     )

将内容放入__init__的好处是您可以在整个课堂上使用它。