特定のWebサイトから「長い」投稿を削りたいとします。私は「...私は、このためのユニットテストを書きたいのですが、私はきちんとそれについて移動するかどうかはわかりません取得リクエストを実行するユニットテストクラスの方法
import requests
class PostScraper:
THRESHOLD = 100
def __init__(self, thread_id):
self.url = 'foo.bar/thread-%s?pg=last' % thread_id
def get_long_posts(self):
page = requests.get(self.url)
soup = BeautifulSoup(page.content, 'html.parser')
posts = soup.find_all('div', 'post-text')
return [post if len(post.text) > THRESHOLD for post in posts]
:これを行うためには、私は次のクラスを作成しましたこの疑似Pythonのようなものを想像してみてください。
def test_getting_long_posts():
scraper = PostScraper(None) # <- Not sure what to pass in. Advice?
stub = {'text': '<html></html>', 'status': '200'}
bind(url=scraper.url, response=stub)
posts = scraper.get_long_posts()
assert.equals(len(posts), 0)
私はユニットテスト、特にPythonで少し新しいです。このアプローチは理にかなっていますか?どのようには私はこれについて行く必要がありますか?
おそらく、あなたのメソッドがあまりにも多すぎることを望まないでしょう。ページを取得し、解析し、すべての投稿を抽出し、それらをフィルタリングします。リファクタリングを単一の目的のメソッドにすると、テストが簡単になります。 –