【发布时间】:2020-12-16 10:02:22
【问题描述】:
我有一个函数,它接受一个 url 并从这个 url 返回文本。
def extract_raw_text_from_url(url, set_parser='lxml'):
try:
req = Request(url, headers={'User-Agent': 'Mozilla/5.0'}) # Set user agent as Mozilla. Otherwise: Error 403
source = urlopen(req).read() # Return source code
parser = set_parser
soup = bs.BeautifulSoup(source, parser) # create beautiful soup object
text = soup.get_text() # get text of websites
except (ValueError): # ToDo: Why urllib.error.URLError is unknown? I want to include it in exception! Works in Colab!
text = []
return text
如何正确测试此功能?因为我认为每次运行测试时都发出请求是不好的做法,所以我认为模拟结果是个好主意。
知道怎么做吗?我正在使用 pytest,但我还是个初学者。
【问题讨论】:
-
你能直接从服务器访问到这个url吗?
-
嗯,是的,如果我插入一个 url,我可以访问它并提出真正的请求。但我认为最好的做法是编写测试,不要连接到互联网才能正常工作
标签: python testing beautifulsoup mocking pytest