(self, api, source, license, Engine, query="today", type=web.SEARCH)
| 457 | } |
| 458 | |
| 459 | def _test_search_engine(self, api, source, license, Engine, query="today", type=web.SEARCH): |
| 460 | # Assert SearchEngine standard interface for any api: |
| 461 | # Google, Yahoo, Bing, Twitter, Wikipedia, Flickr, Facebook, Products, Newsfeed. |
| 462 | # SearchEngine.search() returns a list of Result objects with unicode fields, |
| 463 | # except Wikipedia which returns a WikipediaArticle (MediaWikiArticle subclass). |
| 464 | if api == "Yahoo" and license == ("",""): |
| 465 | return |
| 466 | t = time.time() |
| 467 | e = Engine(license=license, throttle=0.25, language="en") |
| 468 | v = e.search(query, type, start=1, count=1, cached=False) |
| 469 | t = time.time() - t |
| 470 | self.assertTrue(t >= 0.25) |
| 471 | self.assertEqual(e.license, license) |
| 472 | self.assertEqual(e.throttle, 0.25) |
| 473 | self.assertEqual(e.language, "en") |
| 474 | self.assertEqual(v.query, query) |
| 475 | if source != web.MEDIAWIKI: |
| 476 | self.assertEqual(v.source, source) |
| 477 | self.assertEqual(v.type, type) |
| 478 | self.assertEqual(len(v), 1) |
| 479 | self.assertTrue(isinstance(v[0], web.Result)) |
| 480 | self.assertTrue(isinstance(v[0].url, unicode)) |
| 481 | self.assertTrue(isinstance(v[0].title, unicode)) |
| 482 | self.assertTrue(isinstance(v[0].description, unicode)) |
| 483 | self.assertTrue(isinstance(v[0].language, unicode)) |
| 484 | self.assertTrue(isinstance(v[0].author, (unicode, tuple))) |
| 485 | self.assertTrue(isinstance(v[0].date, unicode)) |
| 486 | else: |
| 487 | self.assertTrue(isinstance(v, web.MediaWikiArticle)) |
| 488 | # Assert zero results for start < 1 and count < 1. |
| 489 | v1 = e.search(query, start=0) |
| 490 | v2 = e.search(query, count=0) |
| 491 | if source != web.MEDIAWIKI: |
| 492 | self.assertEqual(len(v1), 0) |
| 493 | self.assertEqual(len(v2), 0) |
| 494 | else: |
| 495 | self.assertTrue(isinstance(v1, web.MediaWikiArticle)) |
| 496 | self.assertEqual(v2, None) |
| 497 | # Assert SearchEngineTypeError for unknown type. |
| 498 | self.assertRaises(web.SearchEngineTypeError, e.search, query, type="crystall-ball") |
| 499 | print "pattern.web.%s.search()" % api |
| 500 | |
| 501 | def test_search_google(self): |
| 502 | self._test_search_engine("Google", *self.api["Google"]) |
no test coverage detected