Mentorat docstring sur les mocks
Introduction to Wagtail
Wagtail is a powerful, open-source content management system built on Django.
Installing Wagtail
What is Wagtail?
Follow the official documentation for easy installation and setup.
Wagtail Admin Interface
The admin interface is intuitive, making content management simple and efficient.
Creating Pages
Learn how to create and manage different page types in Wagtail.
Customizing Wagtail
Explore how to customize themes and templates for your Wagtail site.
Wagtail Community
Join the Wagtail community for support, resources, and collaboration.
Mentorat docstring sur les mocks
Exemple requests
import unittest
from unittest.mock import patch, Mock
from bs4 import BeautifulSoup
# Importer les fonctions à tester depuis le fichier original (à adapter selon l'organisation du projet)
# from your_module import extract_titles_from_html, get_next_page_url, get_all_titles
class TestScraperFunctions(unittest.TestCase):
def setUp(self):
# Exemple de contenu HTML d'une page avec des articles et une pagination
self.sample_html_with_articles = '''
<div class="colonneActu">
<article class="col1">
<a class="titre" href="/actu/123">Titre 1</a>
</article>
<article class="col2">
<a class="titre" href="/actu/456">Titre 2</a>
</article>
</div>
<div class="pagination">
<a href="/page/2" title="Page suivante"><i class="fas fa-angle-right"></i></a>
</div>
'''
self.sample_html_no_next_page = '''
<div class="colonneActu">
<article class="col1">
<a class="titre" href="/actu/789">Titre 3</a>
</article>
</div>
<div class="pagination">
<!-- No next page -->
</div>
'''
self.empty_html = '''
<div class="colonneActu"></div>
<div class="pagination"></div>
'''
def test_extract_titles_from_html(self):
# Test pour s'assurer que les titres sont correctement extraits
titles = extract_titles_from_html(self.sample_html_with_articles)
self.assertEqual(titles, ["Titre 1", "Titre 2"])
# Test avec du HTML vide (pas d'articles)
titles = extract_titles_from_html(self.empty_html)
self.assertEqual(titles, [])
def test_get_next_page_url(self):
# Test pour s'assurer que l'URL de la page suivante est correctement extraite
next_page_url = get_next_page_url(self.sample_html_with_articles)
self.assertEqual(next_page_url, "/page/2")
# Test avec du HTML sans page suivante
next_page_url = get_next_page_url(self.sample_html_no_next_page)
self.assertIsNone(next_page_url)
@patch('requests.get')
def test_get_all_titles(self, mock_get):
# Préparer une réponse fictive pour le premier appel
mock_response_page_1 = Mock()
mock_response_page_1.status_code = 200
mock_response_page_1.content = self.sample_html_with_articles
# Préparer une réponse fictive pour le deuxième appel (dernière page)
mock_response_page_2 = Mock()
mock_response_page_2.status_code = 200
mock_response_page_2.content = self.sample_html_no_next_page
# Mock la réponse de `requests.get` pour retourner ces objets
mock_get.side_effect = [mock_response_page_1, mock_response_page_2]
# Tester que la fonction récupère bien tous les titres sur plusieurs pages
titles = get_all_titles()
self.assertEqual(titles, ["Titre 1", "Titre 2", "Titre 3"])
@patch('requests.get')
def test_get_all_titles_with_network_error(self, mock_get):
# Simuler une erreur de réseau
mock_get.side_effect = RequestException("Network error")
# Tester que la fonction gère correctement l'erreur réseau
titles = get_all_titles()
self.assertEqual(titles, []) # La fonction doit retourner une liste vide en cas d'erreur
@patch('requests.get')
def test_get_all_titles_with_http_error(self, mock_get):
# Simuler un code de réponse HTTP 500
mock_response = Mock()
mock_response.status_code = 500
mock_get.return_value = mock_response
# Tester que la fonction gère correctement une réponse HTTP non 200
titles = get_all_titles()
self.assertEqual(titles, []) # La fonction doit retourner une liste vide en cas d'erreur HTTP
if __name__ == '__main__':
unittest.main()
mentorat doctstring
By Thierry Chappuis
mentorat doctstring
- 34