2017-02-15 37 views
0

当我使用unittest运行此代码时,get_page()方法中的print(self.req.text)语句按预期工作,但get_html()方法中的该语句产生错误AttributeError: 'NoneType' object has no attribute 'text'。我想知道这是为什么。我是否犯了一个错误,或者是否有与请求响应有关的问题,这意味着他们无法按照我尝试的方式存储在课堂中?如果是这样,阅读软件包文档对我来说并不明显。非常感谢。在类方法之间请求对象持久性

from . import helpers 
import requests, bs4 

class Page(object): 
    """Page """ 

    def __init__(self, url=None): 
     self.url = url 
     self.req = None 
     self.html = None 
     self.soup = None 

    def get_page(self, url): 
     self.req = requests.get(url) 
     print(self.req.text) # This works 
     return self.req 

    def get_html(self): 
     print(self.req.text) # This errors 
     self.html = self.req.text 
     return self.html 
+3

你打电话之前''get_page' get_html'?否则'self.req'还没有设置。 – CoryKramer

+0

谢谢。我想我现在明白了:这是因为unittest为每个测试运行setUp和tearDown,而不是我错误地认为的每一类测试。谢谢 – curlew77

回答

0

self.req = None__init__似乎是原因。

你有两个选择

  • 使确保get_page()之前get_html
  • 给予重写self.req = None__init__self.req = self.get_page()
相关问题