我有一个基于Python的网络抓取宠物项目,我正在尝试实现一些TDD,但我很快就遇到了问题.单元测试需要互联网连接,以及下载html文本.虽然我知道实际的解析可以使用本地文件完成,但是一些方法用于简单地重新定义URL并再次查询网站.这似乎打破了TDD的一些最佳实践(引用:罗伯特·马丁的清洁代码声称测试应该在任何环境中都可以运行).虽然这是一个Python项目,但我遇到了一个类似的问题,使用R进行Yahoo Finance抓取,我确信这种事情与语言无关.至少,这个问题似乎违反了TDD的主要指导原则,即测试应该快速运行.
tldr; 在TDD中是否有处理网络连接的最佳实践?
AbstractScraper.py
from urllib.request import urlopen
from bs4 import BeautifulSoup
class AbstractScraper:
def __init__(self, url):
self.url = url
self.dataDictionary = None
def makeDataDictionary(self):
html = urlopen(self.url)
text = html.read().decode("utf-8")
soup = BeautifulSoup(text, "lxml")
self.dataDictionary = {"html": html, "text": text, "soup": soup}
def writeSoup(self, path):
with open(path, "w") as outfile:
outfile.write(self.dataDictionary["soup"].prettify())
Run Code Online (Sandbox Code Playgroud)
TestAbstractScraper.py
import unittest
from http.client import HTTPResponse
from bs4 import BeautifulSoup
from CrackedScrapeProject.scrape.AbstractScraper import AbstractScraper
from io import StringIO
class TestAbstractScraperMethods(unittest.TestCase): …Run Code Online (Sandbox Code Playgroud) 当我对浮点数据取幂时遇到了一个问题。看起来它应该是一个简单的修复。这是我的示例代码:
temp <- c(-0.005220092)
temp^1.1
[1] NaN
-0.005220092^1.1
[1] -0.003086356
Run Code Online (Sandbox Code Playgroud)
我在这方面犯了一些明显的错误吗?似乎这可能是我对指数的疏忽。
谢谢,
亚历克斯