jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/482503 )
Change subject: [tests] Provide additional assert methods for TestCase
......................................................................
[tests] Provide additional assert methods for TestCase
- assertIsEmpty tests whether a seqence is empty
- assertIsNotEmpty tests whether a sequence is not empty
- assertLength tests whether a sequence has a given length
or whether its length is equal than another sequence
This methods are for easier tests
and more informative messages when failing
- use the new introduce methods if they are appropriate
- tests added to verify them
Change-Id: I18a01044d9543a3d9984330468071aecf70f0cbe
---
M tests/__init__.py
M tests/aspects.py
M tests/basepage_tests.py
M tests/category_tests.py
M tests/deletionbot_tests.py
M tests/diff_tests.py
M tests/eventstreams_tests.py
M tests/file_tests.py
M tests/flow_edit_tests.py
M tests/flow_tests.py
M tests/interwikidata_tests.py
M tests/l10n_tests.py
M tests/namespace_tests.py
M tests/oauth_tests.py
M tests/page_tests.py
M tests/pagegenerators_tests.py
M tests/protectbot_tests.py
M tests/reflinks_tests.py
M tests/replacebot_tests.py
M tests/site_tests.py
M tests/sparql_tests.py
M tests/template_bot_tests.py
M tests/tests_tests.py
M tests/tools_ip_tests.py
M tests/tools_tests.py
M tests/ui_tests.py
M tests/upload_tests.py
M tests/user_tests.py
M tests/wikibase_tests.py
M tests/xmlreader_tests.py
30 files changed, 259 insertions(+), 185 deletions(-)
Approvals:
D3r1ck01: Looks good to me, approved
jenkins-bot: Verified
diff --git a/tests/__init__.py b/tests/__init__.py
index d62d9ce..1dca767 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -22,6 +22,7 @@
# - mwparserfromhell is optional, so is only imported in textlib_tests
import requests
import unittest
+from unittest.util import safe_repr
from pywikibot import config
import pywikibot.data.api
@@ -30,6 +31,7 @@
from pywikibot import i18n
from pywikibot.tools import PYTHON_VERSION
+
try:
import unittest.mock as mock
from unittest.mock import MagicMock, Mock, patch
@@ -37,6 +39,7 @@
import mock
from mock import MagicMock, Mock, patch
+assert safe_repr # pyflakes workaround
_root_dir = os.path.split(os.path.split(__file__)[0])[0]
diff --git a/tests/aspects.py b/tests/aspects.py
index 6d4e7c7..c7d7ebf 100644
--- a/tests/aspects.py
+++ b/tests/aspects.py
@@ -38,7 +38,8 @@
import tests
-from tests import unittest, patch_request, unpatch_request, unittest_print
+from tests import (
+ safe_repr, unittest, patch_request, unpatch_request, unittest_print)
from tests.utils import (
add_metaclass, execute_pwb, DrySite, DryRequest,
WarningSourceSkipContextManager, AssertAPIErrorContextManager,
@@ -99,6 +100,32 @@
"""
return self.assertItemsEqual(*args, **kwargs)
+ def assertIsEmpty(self, seq, msg=None):
+ """Check that the sequence is empty."""
+ if seq:
+ msg = self._formatMessage(msg, '%s is not empty' % safe_repr(seq))
+ raise self.failureException(msg)
+
+ def assertIsNotEmpty(self, seq, msg=None):
+ """Check that the sequence is not empty."""
+ if not seq:
+ msg = self._formatMessage(msg, '%s is empty' % safe_repr(seq))
+ raise self.failureException(msg)
+
+ def assertLength(self, seq, other, msg=None):
+ """Verify that a sequence expr has the length of
other."""
+ # the other parameter may be given as a sequence too
+ first_len = len(seq)
+ try:
+ second_len = len(other)
+ except TypeError:
+ second_len = other
+
+ if first_len != second_len:
+ msg = self._formatMessage(
+ msg, 'len(%s) != %s' % (safe_repr(seq), second_len))
+ raise self.failureException(msg)
+
def _addUnexpectedSuccess(self, result):
"""Report and ignore."""
unittest_print(' unexpected success ', end='')
diff --git a/tests/basepage_tests.py b/tests/basepage_tests.py
index b0ae97c..8964049 100644
--- a/tests/basepage_tests.py
+++ b/tests/basepage_tests.py
@@ -57,7 +57,7 @@
self.assertTrue(hasattr(page, '_revid'))
self.assertTrue(hasattr(page, '_revisions'))
- self.assertEqual(len(page._revisions), 1)
+ self.assertLength(page._revisions, 1)
self.assertIn(page._revid, page._revisions)
self.assertFalse(hasattr(page, '_text'))
diff --git a/tests/category_tests.py b/tests/category_tests.py
index 2e38ff7..19f667f 100644
--- a/tests/category_tests.py
+++ b/tests/category_tests.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
"""Tests for the Category class."""
#
-# (C) Pywikibot team, 2014-2018
+# (C) Pywikibot team, 2014-2019
#
# Distributed under the terms of the MIT license.
#
@@ -91,7 +91,7 @@
self.assertNotIn(p3, members_namespace)
members_total = list(cat.members(total=2))
- self.assertEqual(len(members_total), 2)
+ self.assertLength(members_total, 2)
def test_subcategories(self):
"""Test the subcategories method."""
@@ -105,7 +105,7 @@
self.assertNotIn(c2, subcategories)
subcategories_total = list(cat.subcategories(total=2))
- self.assertEqual(len(subcategories_total), 2)
+ self.assertLength(subcategories_total, 2)
def test_subcategories_recurse(self):
"""Test the subcategories method with
recurse=True."""
@@ -138,7 +138,7 @@
self.assertNotIn(p2, articles_namespace)
articles_total = list(cat.articles(total=2))
- self.assertEqual(len(articles_total), 2)
+ self.assertLength(articles_total, 2)
def test_redirects(self):
"""Test the redirects method."""
diff --git a/tests/deletionbot_tests.py b/tests/deletionbot_tests.py
index 6607df7..1e433c7 100644
--- a/tests/deletionbot_tests.py
+++ b/tests/deletionbot_tests.py
@@ -30,12 +30,12 @@
site = self.get_site()
cat = pywikibot.Category(site, 'Pywikibot Delete Test')
delete.main('-cat:Pywikibot_Delete_Test', '-always')
- self.assertEqual(len(list(cat.members())), 0)
+ self.assertEmpty(list(cat.members()))
delete.main('-page:User:Unicodesnowman/DeleteTest1', '-always',
'-undelete', '-summary=pywikibot unit tests')
delete.main('-page:User:Unicodesnowman/DeleteTest2', '-always',
'-undelete', '-summary=pywikibot unit tests')
- self.assertEqual(len(list(cat.members())), 2)
+ self.assertLength(list(cat.members()), 2)
def test_undelete_existing(self):
"""Test undeleting an existing page."""
diff --git a/tests/diff_tests.py b/tests/diff_tests.py
index d53b6f1..5d2f08d 100644
--- a/tests/diff_tests.py
+++ b/tests/diff_tests.py
@@ -80,8 +80,8 @@
site = self.get_site()
diff_html = site.compare(139992, 139993)
output = html_comparator(diff_html)
- self.assertEqual(len(output['added-context']), 1)
- self.assertEqual(len(output['deleted-context']), 1)
+ self.assertLength(output['added-context'], 1)
+ self.assertLength(output['deleted-context'], 1)
@patch('{0}.__import__'.format('__builtin__' if PY2 else
'builtins'),
diff --git a/tests/eventstreams_tests.py b/tests/eventstreams_tests.py
index 2c845df..4007e97 100644
--- a/tests/eventstreams_tests.py
+++ b/tests/eventstreams_tests.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
"""Tests for the eventstreams module."""
#
-# (C) Pywikibot team, 2017-2018
+# (C) Pywikibot team, 2017-2019
#
# Distributed under the terms of the MIT license.
#
@@ -154,7 +154,7 @@
self.es.register_filter(foo='bar')
self.assertTrue(callable(self.es.filter['all'][0]))
self.es.register_filter(bar='baz')
- self.assertEqual(len(self.es.filter['all']), 2)
+ self.assertLength(self.es.filter['all'], 2)
class TestEventStreamsFilterTests(TestCase):
diff --git a/tests/file_tests.py b/tests/file_tests.py
index 297a9e2..1e7b50b 100644
--- a/tests/file_tests.py
+++ b/tests/file_tests.py
@@ -280,7 +280,7 @@
page = pywikibot.FilePage(self.site, 'File:Albert Einstein.jpg')
latest = page.getLatestUploader()
self.assertOneDeprecation()
- self.assertEqual(len(latest), 2)
+ self.assertLength(latest, 2)
self.assertIsInstance(latest[0], unicode)
self.assertIsInstance(latest[1], unicode)
diff --git a/tests/flow_edit_tests.py b/tests/flow_edit_tests.py
index bc60a16..4d08b5b 100644
--- a/tests/flow_edit_tests.py
+++ b/tests/flow_edit_tests.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
"""Edit tests for the flow module."""
#
-# (C) Pywikibot team, 2015-2018
+# (C) Pywikibot team, 2015-2019
#
# Distributed under the terms of the MIT license.
#
@@ -70,7 +70,7 @@
self.assertEqual(wikitext, content)
# Test reply list in topic
new_replies = topic.replies(force=True)
- self.assertEqual(len(new_replies), len(old_replies) + 1)
+ self.assertLength(new_replies, len(old_replies) + 1)
def test_reply_to_topic_root(self):
"""Test replying to the topic's root post
directly."""
@@ -90,7 +90,7 @@
self.assertEqual(wikitext, content)
# Test reply list in topic
new_replies = topic_root.replies(force=True)
- self.assertEqual(len(new_replies), len(old_replies) + 1)
+ self.assertLength(new_replies, len(old_replies) + 1)
def test_reply_to_post(self):
"""Test replying to an ordinary post."""
@@ -109,7 +109,7 @@
self.assertEqual(wikitext, content)
# Test reply list in topic
new_replies = root_post.replies(force=True)
- self.assertEqual(len(new_replies), len(old_replies) + 1)
+ self.assertLength(new_replies, len(old_replies) + 1)
def test_nested_reply(self):
"""Test replying to a previous reply to a
topic."""
@@ -130,7 +130,7 @@
self.assertEqual(first_wikitext, first_content)
# Test reply list in topic
new_root_replies = topic_root.replies(force=True)
- self.assertEqual(len(new_root_replies), len(old_root_replies) + 1)
+ self.assertLength(new_root_replies, len(old_root_replies) + 1)
# Nested reply
old_nested_replies = first_reply_post.replies(force=True)[:]
@@ -147,13 +147,12 @@
# Test reply list in first reply
# Broken due to current Flow reply structure (T105438)
# new_nested_replies = first_reply_post.replies(force=True)
- # self.assertEqual(len(new_nested_replies),
- # len(old_nested_replies) + 1)
+ # self.assertLength(new_nested_replies, len(old_nested_replies) + 1)
# Current test for nested reply list
self.assertListEqual(old_nested_replies, [])
more_root_replies = topic_root.replies(force=True)
- self.assertEqual(len(more_root_replies), len(new_root_replies) + 1)
+ self.assertLength(more_root_replies, len(new_root_replies) + 1)
class TestFlowLockTopic(TestCase):
diff --git a/tests/flow_tests.py b/tests/flow_tests.py
index 4b8df96..ae24720 100644
--- a/tests/flow_tests.py
+++ b/tests/flow_tests.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
"""Tests for the flow module."""
#
-# (C) Pywikibot team, 2015-2018
+# (C) Pywikibot team, 2015-2019
#
# Distributed under the terms of the MIT license.
#
@@ -226,7 +226,7 @@
topic = Topic(self.site, 'Topic:U5y4l1rzitlplyc5')
self.assertEqual(topic.root.uuid, 'u5y4l1rzitlplyc5')
replies = topic.replies()
- self.assertEqual(len(replies), 3)
+ self.assertLength(replies, 3)
self.assertTrue(all(isinstance(reply, Post)
for reply in replies))
self.assertEqual(replies[1].uuid, 'u5y5lysqcvyne4k1')
diff --git a/tests/interwikidata_tests.py b/tests/interwikidata_tests.py
index 5694969..ca3cfe7 100644
--- a/tests/interwikidata_tests.py
+++ b/tests/interwikidata_tests.py
@@ -63,7 +63,7 @@
text = page.get()
# The page looks as expected.
- self.assertEqual(len(page.langlinks()), 1)
+ self.assertLength(page.langlinks(), 1)
iw_link = page.langlinks()[0]
self.assertIsInstance(iw_link, Link)
self.assertEqual(iw_link.canonical_title(), 'کاربر:Ladsgroup')
diff --git a/tests/l10n_tests.py b/tests/l10n_tests.py
index 6c2ae31..2b86318 100644
--- a/tests/l10n_tests.py
+++ b/tests/l10n_tests.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
"""Test valid templates."""
#
-# (C) Pywikibot team, 2015-2018
+# (C) Pywikibot team, 2015-2019
#
# Distributed under the terms of the MIT license.
#
@@ -40,7 +40,7 @@
# check whether the message contains a template
templates = extract_templates_and_params_regex_simple(msg)
self.assertIsInstance(templates, list)
- self.assertGreater(len(templates), 0)
+ self.assertIsNotEmpty(templates)
# known problem
if site.code == 'simple':
diff --git a/tests/namespace_tests.py b/tests/namespace_tests.py
index e8e364f..6d563e8 100644
--- a/tests/namespace_tests.py
+++ b/tests/namespace_tests.py
@@ -96,7 +96,7 @@
self.assertIn('Image', y.aliases)
self.assertIn('Immagine', y.aliases)
- self.assertEqual(len(y), 4)
+ self.assertLength(y, 4)
self.assertEqual(list(y), ['dummy', 'File', 'Image',
'Immagine'])
self.assertEqual(y.case, 'first-letter')
@@ -343,7 +343,7 @@
namespaces_set = set(namespaces)
- self.assertEqual(len(namespaces), len(namespaces_set))
+ self.assertLength(namespaces, namespaces_set)
self.assertTrue(all(isinstance(x, int) for x in namespaces_set))
def test_set_minus(self):
@@ -354,8 +354,8 @@
positive_namespaces = set(namespaces) - excluded_namespaces
- self.assertEqual(len(namespaces),
- len(positive_namespaces) + len(excluded_namespaces))
+ self.assertLength(namespaces,
+ len(positive_namespaces) + len(excluded_namespaces))
class TestNamespacesDictLookupName(TestCase):
diff --git a/tests/oauth_tests.py b/tests/oauth_tests.py
index e211ae9..996d14e 100644
--- a/tests/oauth_tests.py
+++ b/tests/oauth_tests.py
@@ -42,7 +42,7 @@
tokens = self._get_oauth_tokens()
if tokens is None:
self.skipTest('OAuth tokens not set')
- self.assertEqual(len(tokens), 4)
+ self.assertLength(tokens, 4)
self.consumer_token = tokens[:2]
self.access_token = tokens[2:]
diff --git a/tests/page_tests.py b/tests/page_tests.py
index 462f056..4f361ce 100644
--- a/tests/page_tests.py
+++ b/tests/page_tests.py
@@ -678,7 +678,7 @@
page = pywikibot.FilePage(self.site, 'File:Example.jpg')
gen = page.globalusage(total=3)
pages = list(gen)
- self.assertEqual(len(pages), 3)
+ self.assertLength(pages, 3)
self.assertTrue(any(isinstance(p), pywikibot.Page) for p in pages)
self.assertTrue(any(p.site != self.site for p in pages))
@@ -894,12 +894,12 @@
top_two = cnt.most_common(2)
self.assertIsInstance(top_two, list)
- self.assertEqual(len(top_two), 2)
+ self.assertLength(top_two, 2)
self.assertIsInstance(top_two[0], tuple)
self.assertIsInstance(top_two[0][0], basestring)
self.assertIsInstance(top_two[0][1], int)
top_two_usernames = {top_two[0][0], top_two[1][0]}
- self.assertEqual(len(top_two_usernames), 2)
+ self.assertLength(top_two_usernames, 2)
top_two_counts = ([top_two[0][1], top_two[1][1]])
top_two_edit_count = mp.revision_count(top_two_usernames)
self.assertIsInstance(top_two_edit_count, int)
@@ -1023,7 +1023,7 @@
p.markDeletedRevision, 123)
p.undelete(reason='pywikibot unit test')
revs = list(p.revisions())
- self.assertEqual(len(revs), 2)
+ self.assertLength(revs, 2)
self.assertEqual(revs[1].revid, revid)
diff --git a/tests/pagegenerators_tests.py b/tests/pagegenerators_tests.py
index 7440e6a..041d3fb 100755
--- a/tests/pagegenerators_tests.py
+++ b/tests/pagegenerators_tests.py
@@ -94,20 +94,20 @@
site = self.site
gen = pagegenerators.PagesFromTitlesGenerator(self.titles, site)
gen = pagegenerators.NamespaceFilterPageGenerator(gen, 0, site)
- self.assertEqual(len(tuple(gen)), 3)
+ self.assertLength(tuple(gen), 3)
gen = pagegenerators.PagesFromTitlesGenerator(self.titles, site)
gen = pagegenerators.NamespaceFilterPageGenerator(gen, 1, site)
- self.assertEqual(len(tuple(gen)), 4)
+ self.assertLength(tuple(gen), 4)
gen = pagegenerators.PagesFromTitlesGenerator(self.titles, site)
gen = pagegenerators.NamespaceFilterPageGenerator(gen, 10, site)
- self.assertEqual(len(tuple(gen)), 6)
+ self.assertLength(tuple(gen), 6)
gen = pagegenerators.PagesFromTitlesGenerator(self.titles, site)
gen = pagegenerators.NamespaceFilterPageGenerator(gen, (1, 10), site)
- self.assertEqual(len(tuple(gen)), 10)
+ self.assertLength(tuple(gen), 10)
gen = pagegenerators.PagesFromTitlesGenerator(self.titles, site)
gen = pagegenerators.NamespaceFilterPageGenerator(
gen, ('Talk', 'Template'), site)
- self.assertEqual(len(tuple(gen)), 10)
+ self.assertLength(tuple(gen), 10)
def test_RegexFilterPageGenerator(self):
"""Test RegexFilterPageGenerator."""
@@ -119,7 +119,7 @@
gen = pagegenerators.PagesFromTitlesGenerator(self.titles, self.site)
gen = pagegenerators.RegexFilterPageGenerator(gen, '/doc',
quantifier='none')
- self.assertEqual(len(tuple(gen)), 11)
+ self.assertLength(tuple(gen), 11)
gen = pagegenerators.PagesFromTitlesGenerator(self.titles, self.site)
gen = pagegenerators.RegexFilterPageGenerator(gen, ['/doc',
'/meta'])
self.assertPageTitlesEqual(gen,
@@ -130,7 +130,7 @@
gen = pagegenerators.PagesFromTitlesGenerator(self.titles, self.site)
gen = pagegenerators.RegexFilterPageGenerator(gen, ['/doc',
'/meta'],
quantifier='none')
- self.assertEqual(len(tuple(gen)), 9)
+ self.assertLength(tuple(gen), 9)
gen = pagegenerators.PagesFromTitlesGenerator(self.titles, self.site)
gen = pagegenerators.RegexFilterPageGenerator(gen, ['/doc',
'/meta'],
quantifier='all')
@@ -152,7 +152,7 @@
gen = pagegenerators.RegexFilterPageGenerator(
gen, ['template', '/meta'], quantifier='any',
ignore_namespace=False)
- self.assertEqual(len(tuple(gen)), 6)
+ self.assertLength(tuple(gen), 6)
gen = pagegenerators.PagesFromTitlesGenerator(self.titles,
site=self.site)
gen = pagegenerators.RegexFilterPageGenerator(
@@ -166,7 +166,7 @@
gen = pagegenerators.RegexFilterPageGenerator(
gen, ['template', '/meta'], quantifier='none',
ignore_namespace=False)
- self.assertEqual(len(tuple(gen)), 7)
+ self.assertLength(tuple(gen), 7)
def test_RegexBodyFilterPageGenerator(self):
"""Test RegexBodyFilterPageGenerator."""
@@ -184,7 +184,7 @@
self.assertPageTitlesEqual(gen, self.titles)
gen = pagegenerators.RegexBodyFilterPageGenerator(iter(pages), 'talk',
quantifier='none')
- self.assertEqual(len(tuple(gen)), 9)
+ self.assertLength(tuple(gen), 9)
class TestPagesFromPageidGenerator(TestCase):
@@ -240,7 +240,7 @@
gen = pagegenerators.PagesFromTitlesGenerator(self.titles, site)
gen = pagegenerators.CategoryFilterPageGenerator(
gen, self.catfilter_list, site)
- self.assertEqual(len(tuple(gen)), 10)
+ self.assertLength(tuple(gen), 10)
class TestQualityFilterPageGenerator(TestCase):
@@ -265,11 +265,11 @@
site = self.site
gen = pagegenerators.PagesFromTitlesGenerator(self.titles, site)
gen = pagegenerators.QualityFilterPageGenerator(gen, [0])
- self.assertEqual(len(tuple(gen)), 7)
+ self.assertLength(tuple(gen), 7)
gen = pagegenerators.PagesFromTitlesGenerator(self.titles, site)
gen = pagegenerators.NamespaceFilterPageGenerator(gen, [4])
gen = pagegenerators.PagesFromTitlesGenerator(self.titles, site)
- self.assertEqual(len(tuple(gen)), 10)
+ self.assertLength(tuple(gen), 10)
class EdittimeFilterPageGeneratorTestCase(TestCase):
@@ -309,22 +309,22 @@
gen = PagesFromTitlesGenerator(['Wikipedia:Sandbox'], self.site)
gen = pagegenerators.EdittimeFilterPageGenerator(
gen, last_edit_start=two_days_ago)
- self.assertEqual(len(list(gen)), 1)
+ self.assertLength(list(gen), 1)
gen = PagesFromTitlesGenerator(['Wikipedia:Sandbox'], self.site)
gen = pagegenerators.EdittimeFilterPageGenerator(
gen, last_edit_end=two_days_ago)
- self.assertEqual(len(list(gen)), 0)
+ self.assertIsEmpty(list(gen))
gen = PagesFromTitlesGenerator(['Template:Side box'], self.site)
gen = pagegenerators.EdittimeFilterPageGenerator(
gen, last_edit_end=nine_days_ago)
- self.assertEqual(len(list(gen)), 1)
+ self.assertLength(list(gen), 1)
gen = PagesFromTitlesGenerator(['Template:Side box'], self.site)
gen = pagegenerators.EdittimeFilterPageGenerator(
gen, last_edit_start=nine_days_ago)
- self.assertEqual(len(list(gen)), 0)
+ self.assertIsEmpty(list(gen))
class SubpageFilterGeneratorTestCase(TestCase):
@@ -401,12 +401,12 @@
namespaces=[0],
total=self.length)
)
- self.assertEqual(len(items), self.length)
+ self.assertLength(items, self.length)
timestamps = [pywikibot.Timestamp.fromISOformat(item['timestamp'])
for item in items]
self.assertEqual(sorted(timestamps), timestamps)
self.assertTrue(all(item['ns'] == 0 for item in items))
- self.assertEqual(len({item['revid'] for item in items}), self.length)
+ self.assertLength({item['revid'] for item in items}, self.length)
class TestTextfilePageGenerator(DefaultSiteTestCase):
@@ -433,7 +433,7 @@
filename = join_data_path('pagelist-brackets.txt')
site = self.get_site()
titles = list(pagegenerators.TextfilePageGenerator(filename, site))
- self.assertEqual(len(titles), len(self.expected_titles))
+ self.assertLength(titles, self.expected_titles)
expected_titles = [
expected_title[self.title_columns[site.namespaces[page.namespace()]
.case]]
@@ -445,7 +445,7 @@
filename = join_data_path('pagelist-lines.txt')
site = self.get_site()
titles = list(pagegenerators.TextfilePageGenerator(filename, site))
- self.assertEqual(len(titles), len(self.expected_titles))
+ self.assertLength(titles, self.expected_titles)
expected_titles = [
expected_title[self.title_columns[site.namespaces[page.namespace()]
.case]]
@@ -551,11 +551,11 @@
for page in PreloadingGenerator(links, groupsize=20):
self.assertIsInstance(page, pywikibot.Page)
self.assertIsInstance(page.exists(), bool)
- self.assertEqual(len(page._revisions), 1)
+ self.assertLength(page._revisions, 1)
self.assertIsNotNone(page._revisions[page._revid].text)
self.assertFalse(hasattr(page, '_pageprops'))
count += 1
- self.assertEqual(len(links), count)
+ self.assertLength(links, count)
def test_low_step(self):
"""Test PreloadingGenerator with a list of
pages."""
@@ -566,11 +566,11 @@
for page in PreloadingGenerator(links, groupsize=10):
self.assertIsInstance(page, pywikibot.Page)
self.assertIsInstance(page.exists(), bool)
- self.assertEqual(len(page._revisions), 1)
+ self.assertLength(page._revisions, 1)
self.assertIsNotNone(page._revisions[page._revid].text)
self.assertFalse(hasattr(page, '_pageprops'))
count += 1
- self.assertEqual(len(links), count)
+ self.assertLength(links, count)
def test_order(self):
"""Test outcome is following same order of
input."""
@@ -581,12 +581,12 @@
for page in PreloadingGenerator(links, groupsize=10):
self.assertIsInstance(page, pywikibot.Page)
self.assertIsInstance(page.exists(), bool)
- self.assertEqual(len(page._revisions), 1)
+ self.assertLength(page._revisions, 1)
self.assertIsNotNone(page._revisions[page._revid].text)
self.assertFalse(hasattr(page, '_pageprops'))
self.assertEqual(page, links[count])
count += 1
- self.assertEqual(len(links), count)
+ self.assertLength(links, count)
class TestDequePreloadingGenerator(DefaultSiteTestCase):
@@ -610,7 +610,7 @@
pywikibot.Page) for page in pages_out))
self.assertIn(mainpage, pages_out)
self.assertIn(mainpage.toggleTalkPage(), pages_out)
- self.assertEqual(len(pages_out), 2)
+ self.assertLength(pages_out, 2)
self.assertTrue(pages_out[1].isTalkPage())
@@ -769,7 +769,10 @@
gen = pagegenerators.ItemClaimFilterPageGenerator([item], prop, claim,
qualifiers, negate)
pages = set(gen)
- self.assertEqual(len(pages), 1 if valid else 0)
+ if valid:
+ self.assertLength(pages, 1)
+ else:
+ self.assertIsEmpty(pages)
def _get_council_page(self):
"""Return United Nations Security Council Wikidata
page."""
@@ -1053,7 +1056,7 @@
gf.handleArg('-limit:10')
gen = gf.getCombinedGenerator()
pages = list(gen)
- self.assertEqual(len(pages), 10)
+ self.assertLength(pages, 10)
# pipe-separated used as test reference.
pageids = '|'.join(str(page.pageid) for page in pages)
@@ -1063,7 +1066,7 @@
gen = gf.getCombinedGenerator()
self.assertIsNotNone(gen)
pages_from_pageid = list(gen)
- self.assertEqual(len(pages_from_pageid), 10)
+ self.assertLength(pages_from_pageid, 10)
for page_a, page_b in zip(pages, pages_from_pageid):
self.assertIsInstance(page_a, pywikibot.Page)
self.assertIsInstance(page_b, pywikibot.Page)
@@ -1083,7 +1086,7 @@
gen = gf.getCombinedGenerator()
self.assertIsNotNone(gen)
pages = set(gen)
- self.assertEqual(len(pages), 1)
+ self.assertLength(pages, 1)
def test_random_generator_ns(self):
"""Test random generator with namespace."""
@@ -1111,7 +1114,7 @@
gen = gf.getCombinedGenerator()
self.assertIsNotNone(gen)
pages = set(gen)
- self.assertEqual(len(pages), 1)
+ self.assertLength(pages, 1)
def test_randomredirect_generator_ns(self):
"""Test random generator with namespace."""
@@ -1300,7 +1303,7 @@
'pages. If not, create a new page on the site to make the test ' \
'pass again.'.format(url=newpages_url)
- self.assertGreater(len(pages), 0, failure_message)
+ self.assertIsNotEmpty(pages, msg=failure_message)
def test_newpages_ns_default(self, key):
"""Test newpages generator with limit argument."""
@@ -1379,7 +1382,7 @@
'Metallurgy\\, and Materials'))
gen = gf.getCombinedGenerator()
self.assertIsNotNone(gen)
- self.assertEqual(len(set(gen)), 1)
+ self.assertLength(set(gen), 1)
def test_onlyifnot(self):
"""Test -onlyifnot without qualifiers."""
@@ -1389,7 +1392,7 @@
'Metallurgy\\, and Materials')
gen = gf.getCombinedGenerator()
self.assertIsNotNone(gen)
- self.assertEqual(len(set(gen)), 0)
+ self.assertIsEmpty(set(gen))
def test_onlyif_qualifiers(self):
"""Test -onlyif with qualifiers."""
@@ -1398,7 +1401,7 @@
gf.handleArg('-onlyif:P47=Q837,P805=Q3088768')
gen = gf.getCombinedGenerator()
self.assertIsNotNone(gen)
- self.assertEqual(len(set(gen)), 1)
+ self.assertLength(set(gen), 1)
def test_searchitem(self):
"""Test -searchitem."""
@@ -1484,7 +1487,7 @@
gen = gf.getCombinedGenerator()
self.assertIsNotNone(gen)
pages = set(gen)
- self.assertGreater(len(pages), 0)
+ self.assertIsNotEmpty(pages)
self.assertTrue(all(isinstance(item, pywikibot.User)
for item in pages))
@@ -1495,7 +1498,7 @@
gen = gf.getCombinedGenerator()
self.assertIsNotNone(gen)
pages = set(gen)
- self.assertEqual(len(pages), 0)
+ self.assertIsEmpty(pages)
def test_logevents_with_total(self):
"""Test -logevents which uses total."""
@@ -1504,7 +1507,7 @@
gen = gf.getCombinedGenerator()
self.assertIsNotNone(gen)
pages = set(gen)
- self.assertEqual(len(pages), 1)
+ self.assertLength(pages, 1)
self.assertTrue(all(isinstance(item, pywikibot.User)
for item in pages))
@@ -1572,7 +1575,7 @@
pagegenerator = pagegenerators.LiveRCPageGenerator(site,
total=self.length)
entries = list(pagegenerator)
- self.assertEqual(len(entries), self.length)
+ self.assertLength(entries, self.length)
testentry = entries[0]
self.assertEqual(testentry.site, site)
diff --git a/tests/protectbot_tests.py b/tests/protectbot_tests.py
index 94aea91..08b5009 100644
--- a/tests/protectbot_tests.py
+++ b/tests/protectbot_tests.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
"""Tests for scripts/protect.py."""
#
-# (C) Pywikibot team, 2014-2018
+# (C) Pywikibot team, 2014-2019
#
# Distributed under the terms of the MIT license.
#
@@ -31,11 +31,11 @@
protect.main('-page:User:Sn1per/ProtectTest1', '-always',
'-unprotect', '-summary=Pywikibot protect.py unit
tests')
page = pywikibot.Page(site, 'User:Sn1per/ProtectTest1')
- self.assertEqual(len(list(page.protection())), 0)
+ self.assertIsEmpty(list(page.protection()))
protect.main('-page:User:Sn1per/ProtectTest1', '-always',
'-default', '-summary=Pywikibot protect.py unit
tests')
page = pywikibot.Page(site, 'User:Sn1per/ProtectTest1')
- self.assertEqual(len(list(page.protection())), 2)
+ self.assertLength(list(page.protection()), 2)
def test_summary(self):
"""Test automatic (un)protection summary on the test
wiki."""
diff --git a/tests/reflinks_tests.py b/tests/reflinks_tests.py
index cdd2555..ab8c57c 100644
--- a/tests/reflinks_tests.py
+++ b/tests/reflinks_tests.py
@@ -30,7 +30,7 @@
namespaces=[0, 1],
site=self.get_site())
pages = list(gen)
- self.assertEqual(len(pages), 0)
+ self.assertIsEmpty(pages)
def test_simple_bare_refs(self):
"""Test simple bare references in multiple
namespaces."""
diff --git a/tests/replacebot_tests.py b/tests/replacebot_tests.py
index e203dd8..c533495 100644
--- a/tests/replacebot_tests.py
+++ b/tests/replacebot_tests.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
"""Tests for the replace script and ReplaceRobot class."""
#
-# (C) Pywikibot team, 2015-2018
+# (C) Pywikibot team, 2015-2019
#
# Distributed under the terms of the MIT license.
#
@@ -128,17 +128,17 @@
self.assertIsInstance(replacement.fix_set, list)
self.assertIn(replacement, replacement.fix_set)
self.assertIs(replacement, replacement.fix_set[offset])
- self.assertEqual(len(replacement.fix_set), length)
+ self.assertLength(replacement.fix_set, length)
def _get_bot(self, only_confirmation, *args):
"""Run with arguments, assert and return one
bot."""
self.assertIsNone(self._run(*args))
- self.assertEqual(len(self.bots), 1)
+ self.assertLength(self.bots, 1)
bot = self.bots[0]
if only_confirmation is not None:
self.assertIn(self.SUMMARY_CONFIRMATION, self.inputs)
if only_confirmation is True:
- self.assertEqual(len(self.inputs), 1)
+ self.assertLength(self.inputs, 1)
else:
self.assertNotIn(self.SUMMARY_CONFIRMATION, self.inputs)
self.assertEqual(bot.site, self.site)
@@ -164,38 +164,38 @@
def test_only_cmd(self):
"""Test command line replacements only."""
bot = self._get_bot(True, '1', '2')
- self.assertEqual(len(bot.replacements), 1)
+ self.assertLength(bot.replacements, 1)
self._test_replacement(bot.replacements[0])
def test_cmd_automatic(self):
"""Test command line replacements with automatic
summary."""
bot = self._get_bot(None, '1', '2', '-automaticsummary')
- self.assertEqual(len(bot.replacements), 1)
+ self.assertLength(bot.replacements, 1)
self._test_replacement(bot.replacements[0])
self.assertEqual(self.inputs, [])
def test_only_fix_global_message(self):
"""Test fixes replacements only."""
bot = self._get_bot(None, '-fix:has-msg')
- self.assertEqual(len(bot.replacements), 1)
+ self.assertLength(bot.replacements, 1)
self._test_fix_replacement(bot.replacements[0])
def test_only_fix_global_message_tw(self):
"""Test fixes replacements only."""
bot = self._get_bot(None, '-fix:has-msg-tw')
- self.assertEqual(len(bot.replacements), 1)
+ self.assertLength(bot.replacements, 1)
self._test_fix_replacement(bot.replacements[0])
def test_only_fix_no_message(self):
"""Test fixes replacements only."""
bot = self._get_bot(True, '-fix:no-msg')
- self.assertEqual(len(bot.replacements), 1)
+ self.assertLength(bot.replacements, 1)
self._test_fix_replacement(bot.replacements[0])
def test_only_fix_all_replacement_summary(self):
"""Test fixes replacements only."""
bot = self._get_bot(None, '-fix:all-repl-msg')
- self.assertEqual(len(bot.replacements), 1)
+ self.assertLength(bot.replacements, 1)
self._test_fix_replacement(bot.replacements[0], msg=True)
def test_only_fix_partial_replacement_summary(self):
@@ -203,26 +203,26 @@
bot = self._get_bot(True, '-fix:partial-repl-msg')
for offset, replacement in enumerate(bot.replacements):
self._test_fix_replacement(replacement, 2, offset, offset == 0)
- self.assertEqual(len(bot.replacements), 2)
+ self.assertLength(bot.replacements, 2)
def test_only_fix_multiple(self):
"""Test fixes replacements only."""
bot = self._get_bot(None, '-fix:has-msg-multiple')
for offset, replacement in enumerate(bot.replacements):
self._test_fix_replacement(replacement, 3, offset)
- self.assertEqual(len(bot.replacements), 3)
+ self.assertLength(bot.replacements, 3)
def test_cmd_and_fix(self):
"""Test command line and fix replacements
together."""
bot = self._get_bot(True, '1', '2', '-fix:has-msg')
- self.assertEqual(len(bot.replacements), 2)
+ self.assertLength(bot.replacements, 2)
self._test_replacement(bot.replacements[0])
self._test_fix_replacement(bot.replacements[1])
def test_except_title(self):
"""Test excepting and requiring a title specific to
fix."""
bot = self._get_bot(True, '-fix:no-msg-title-exceptions')
- self.assertEqual(len(bot.replacements), 1)
+ self.assertLength(bot.replacements, 1)
self._test_fix_replacement(bot.replacements[0])
self.assertIn('title', bot.replacements[0].exceptions)
self.assertIn('require-title', bot.replacements[0].exceptions)
@@ -233,7 +233,7 @@
def test_fix_callable(self):
"""Test fix replacements using a callable."""
bot = self._get_bot(True, '-fix:no-msg-callable')
- self.assertEqual(len(bot.replacements), 1)
+ self.assertLength(bot.replacements, 1)
self._test_fix_replacement(bot.replacements[0])
self.assertTrue(callable(bot.replacements[0].new))
diff --git a/tests/site_tests.py b/tests/site_tests.py
index 5c9069c..0c905ca 100644
--- a/tests/site_tests.py
+++ b/tests/site_tests.py
@@ -404,7 +404,7 @@
about_msgs = self.site.mediawiki_messages(msg)
self.assertIsInstance(mysite.mediawiki_messages(msg), dict)
self.assertTrue(mysite.mediawiki_messages(msg))
- self.assertEqual(len(about_msgs), 2)
+ self.assertLength(about_msgs, 2)
self.assertIn(msg[0], about_msgs)
# mediawiki_messages must be given a list; using a string will split it
@@ -420,12 +420,11 @@
self.assertRegex(ts, r'(19|20)\d\d[0-1]\d[0-3]\d[0-2]\d[0-5]\d[0-5]\d')
self.assertIsInstance(mysite.months_names, list)
- self.assertEqual(len(mysite.months_names), 12)
+ self.assertLength(mysite.months_names, 12)
self.assertTrue(all(isinstance(month, tuple)
for month in mysite.months_names))
- self.assertTrue(all(len(month) == 2
- for month in mysite.months_names))
-
+ for month in mysite.months_names:
+ self.assertLength(month, 2)
self.assertEqual(mysite.list_to_text(('pywikibot',)),
'pywikibot')
def test_english_specific_methods(self):
@@ -458,7 +457,7 @@
self.assertRaises(pywikibot.IsNotRedirectPage,
mysite.getredirtarget, mainpage)
a = list(mysite.preloadpages([mainpage]))
- self.assertEqual(len(a), int(mainpage.exists()))
+ self.assertLength(a, int(mainpage.exists()))
if a:
self.assertEqual(a[0], mainpage)
@@ -2046,7 +2045,7 @@
'2014-12-21T06:07:31Z'])
revs = list(p.revisions())
- self.assertEqual(len(revs), 2)
+ self.assertLength(revs, 2)
self.assertEqual(revs[0].revid, 219995)
self.assertEqual(revs[1].revid, 219994)
@@ -2067,7 +2066,7 @@
"""Test the site.users() method with bot
username."""
mysite = self.get_site()
us = list(mysite.users(mysite.user()))
- self.assertEqual(len(us), 1)
+ self.assertLength(us, 1)
self.assertIsInstance(us[0], dict)
@@ -2161,7 +2160,7 @@
pages.append(rndpage)
if len(pages) == 11:
break
- self.assertEqual(len(pages), 11)
+ self.assertLength(pages, 11)
def test_limit_10(self):
"""Test site.randompages() with limit."""
@@ -2372,25 +2371,25 @@
gen = mysite.pagecategories(mypage, total=12)
gen.set_query_increment = 5
cats = [c for c in gen]
- self.assertEqual(len(cats), 12)
+ self.assertLength(cats, 12)
gen = mysite.categorymembers(mycat, total=12)
gen.set_query_increment = 5
cat_members = [cm for cm in gen]
- self.assertEqual(len(cat_members), 12)
+ self.assertLength(cat_members, 12)
gen = mysite.pageimages(mypage, total=5)
gen.set_query_increment = 3
images = [im for im in gen]
- self.assertEqual(len(images), 5)
+ self.assertLength(images, 5)
gen = mysite.pagetemplates(mypage, total=5)
gen.set_query_increment = 3
templates = [tl for tl in gen]
- self.assertEqual(len(templates), 5)
+ self.assertLength(templates, 5)
mysite.loadrevisions(mypage, step=5, total=12)
- self.assertEqual(len(mypage._revisions), 12)
+ self.assertLength(mypage._revisions, 12)
class TestSiteInfo(DefaultSiteTestCase):
@@ -2460,7 +2459,7 @@
mysite = self.site
self.assertRaises(KeyError, mysite.siteinfo.__getitem__, not_exists)
self.assertNotIn(not_exists, mysite.siteinfo)
- self.assertEqual(len(mysite.siteinfo.get(not_exists)), 0)
+ self.assertIsEmpty(mysite.siteinfo.get(not_exists))
self.assertFalse(entered_loop(mysite.siteinfo.get(not_exists)))
if PY2:
self.assertFalse(
@@ -2544,7 +2543,7 @@
self.mysite.loadrevisions(self.mainpage, total=15)
self.mysite.loadrevisions(self.mainpage)
self.assertFalse(hasattr(self.mainpage, '_text'))
- self.assertEqual(len(self.mainpage._revisions), 15)
+ self.assertLength(self.mainpage._revisions, 15)
self.assertIn(self.mainpage._revid, self.mainpage._revisions)
self.assertIsNone(self.mainpage._revisions[self.mainpage._revid].text)
# The revision content will be loaded by .text
@@ -2583,17 +2582,17 @@
def test_loadrevisions_querycontinue(self):
"""Test the site.loadrevisions() method with
query-continue."""
self.mysite.loadrevisions(self.mainpage, step=5, total=12)
- self.assertEqual(len(self.mainpage._revisions), 12)
+ self.assertLength(self.mainpage._revisions, 12)
def test_loadrevisions_revdir(self):
"""Test the site.loadrevisions() method with
rvdir=True."""
self.mysite.loadrevisions(self.mainpage, rvdir=True, total=15)
- self.assertEqual(len(self.mainpage._revisions), 15)
+ self.assertLength(self.mainpage._revisions, 15)
def test_loadrevisions_timestamp(self):
"""Test the site.loadrevisions() method, listing based on
timestamp."""
self.mysite.loadrevisions(self.mainpage, rvdir=True, total=15)
- self.assertEqual(len(self.mainpage._revisions), 15)
+ self.assertLength(self.mainpage._revisions, 15)
revs = self.mainpage._revisions
timestamps = [str(revs[rev].timestamp) for rev in revs]
self.assertTrue(all(ts < '2002-01-31T00:00:00Z' for ts in
timestamps))
@@ -2615,7 +2614,7 @@
def test_loadrevisions_rev_id(self):
"""Test the site.loadrevisions() method, listing based on
rev_id."""
self.mysite.loadrevisions(self.mainpage, rvdir=True, total=15)
- self.assertEqual(len(self.mainpage._revisions), 15)
+ self.assertLength(self.mainpage._revisions, 15)
revs = self.mainpage._revisions
self.assertTrue(all(139900 <= rev <= 140100 for rev in revs))
@@ -2696,9 +2695,9 @@
def test_backlinks_redirects_length(self):
"""Test backlinks redirects length."""
- self.assertEqual(len(self.backlinks), 1)
- self.assertEqual(len(self.references), 1)
- self.assertEqual(len(self.nofollow), 1)
+ self.assertLength(self.backlinks, 1)
+ self.assertLength(self.references, 1)
+ self.assertLength(self.nofollow, 1)
def test_backlinks_redirects_status(self):
"""Test backlinks redirects statur."""
@@ -2779,10 +2778,10 @@
self.assertEqual(image_namespace.custom_prefix(), ':Fil:')
self.assertEqual(image_namespace.canonical_prefix(), ':File:')
self.assertEqual(sorted(image_namespace.aliases), ['Bilde',
'Image'])
- self.assertEqual(len(image_namespace), 4)
+ self.assertLength(image_namespace, 4)
- self.assertEqual(len(namespaces[1].aliases), 0)
- self.assertEqual(len(namespaces[4].aliases), 1)
+ self.assertIsEmpty(namespaces[1].aliases)
+ self.assertLength(namespaces[4].aliases, 1)
self.assertEqual(namespaces[4].aliases[0], 'WP')
self.assertIn('WP', namespaces[4])
@@ -2943,7 +2942,7 @@
self.assertIsInstance(page.exists(), bool)
if page.exists():
self.assertTrue(hasattr(page, '_revid'))
- self.assertEqual(len(page._revisions), 1)
+ self.assertLength(page._revisions, 1)
self.assertIn(page._revid, page._revisions)
self.assertIsNotNone(page._revisions[page._revid].text)
self.assertFalse(hasattr(page, '_pageprops'))
@@ -2969,7 +2968,7 @@
self.assertIsInstance(page, pywikibot.Page)
self.assertIsInstance(page.exists(), bool)
if page.exists():
- self.assertEqual(len(page._revisions), 1)
+ self.assertLength(page._revisions, 1)
self.assertIsNotNone(page._revisions[page._revid].text)
self.assertFalse(hasattr(page, '_pageprops'))
count += 1
@@ -2986,7 +2985,7 @@
self.assertIsInstance(page, pywikibot.Page)
self.assertIsInstance(page.exists(), bool)
if page.exists():
- self.assertEqual(len(page._revisions), 1)
+ self.assertLength(page._revisions, 1)
self.assertIsNotNone(page._revisions[page._revid].text)
self.assertFalse(hasattr(page, '_pageprops'))
count += 1
@@ -3012,7 +3011,7 @@
self.assertIsInstance(page, pywikibot.Page)
self.assertIsInstance(page.exists(), bool)
if page.exists():
- self.assertEqual(len(page._revisions), 1)
+ self.assertLength(page._revisions, 1)
self.assertIsNotNone(page._revisions[page._revid].text)
self.assertFalse(hasattr(page, '_pageprops'))
count += 1
@@ -3037,7 +3036,7 @@
self.assertIsInstance(page, pywikibot.Page)
self.assertIsInstance(page.exists(), bool)
if page.exists():
- self.assertEqual(len(page._revisions), 1)
+ self.assertLength(page._revisions, 1)
self.assertIsNotNone(page._revisions[page._revid].text)
self.assertFalse(hasattr(page, '_pageprops'))
count += 1
@@ -3065,7 +3064,7 @@
self.assertIsInstance(page, pywikibot.Page)
self.assertIsInstance(page.exists(), bool)
if page.exists():
- self.assertEqual(len(page._revisions), 1)
+ self.assertLength(page._revisions, 1)
self.assertIsNotNone(page._revisions[page._revid].text)
self.assertFalse(hasattr(page, '_pageprops'))
count += 1
@@ -3094,7 +3093,7 @@
self.assertIsInstance(page, pywikibot.Page)
self.assertIsInstance(page.exists(), bool)
if page.exists():
- self.assertEqual(len(page._revisions), 1)
+ self.assertLength(page._revisions, 1)
self.assertIsNotNone(page._revisions[page._revid].text)
self.assertFalse(hasattr(page, '_pageprops'))
count += 1
@@ -3135,7 +3134,7 @@
self.assertIsInstance(page, pywikibot.Page)
self.assertIsInstance(page.exists(), bool)
if page.exists():
- self.assertEqual(len(page._revisions), 1)
+ self.assertLength(page._revisions, 1)
self.assertIsNotNone(page._revisions[page._revid].text)
self.assertFalse(hasattr(page, '_pageprops'))
self.assertTrue(hasattr(page, '_langlinks'))
@@ -3150,12 +3149,12 @@
mainpage = self.get_mainpage()
links = list(mysite.pagelinks(mainpage, total=20))
pages = list(mysite.preloadpages(links, groupsize=5, langlinks=True))
- self.assertEqual(len(links), len(pages))
+ self.assertLength(links, pages)
for page in pages:
self.assertIsInstance(page, pywikibot.Page)
self.assertIsInstance(page.exists(), bool)
if page.exists():
- self.assertEqual(len(page._revisions), 1)
+ self.assertLength(page._revisions, 1)
self.assertIsNotNone(page._revisions[page._revid].text)
self.assertFalse(hasattr(page, '_pageprops'))
if pages:
@@ -3175,13 +3174,13 @@
self.assertIsInstance(page, pywikibot.Page)
self.assertIsInstance(page.exists(), bool)
if page.exists():
- self.assertEqual(len(page._revisions), 1)
+ self.assertLength(page._revisions, 1)
self.assertIsNotNone(page._revisions[page._revid].text)
self.assertFalse(hasattr(page, '_pageprops'))
self.assertTrue(hasattr(page, '_langlinks'))
count += 1
- self.assertEqual(len(links), count)
+ self.assertLength(links, count)
@allowed_failure
def test_preload_templates(self):
@@ -3195,7 +3194,7 @@
self.assertIsInstance(page, pywikibot.Page)
self.assertIsInstance(page.exists(), bool)
if page.exists():
- self.assertEqual(len(page._revisions), 1)
+ self.assertLength(page._revisions, 1)
self.assertIsNotNone(page._revisions[page._revid].text)
self.assertFalse(hasattr(page, '_pageprops'))
self.assertTrue(hasattr(page, '_templates'))
@@ -3215,7 +3214,7 @@
self.assertIsInstance(page, pywikibot.Page)
self.assertIsInstance(page.exists(), bool)
if page.exists():
- self.assertEqual(len(page._revisions), 1)
+ self.assertLength(page._revisions, 1)
self.assertIsNotNone(page._revisions[page._revid].text)
self.assertFalse(hasattr(page, '_pageprops'))
self.assertTrue(hasattr(page, '_templates'))
@@ -3241,7 +3240,7 @@
self.assertTrue(hasattr(item, '_content'))
self.assertNotIn(item, seen)
seen.append(item)
- self.assertEqual(len(seen), 5)
+ self.assertLength(seen, 5)
def test_item_as_page(self):
"""Test that ItemPage preloading works for Page
objects."""
@@ -3256,7 +3255,7 @@
self.assertTrue(hasattr(item, '_content'))
self.assertNotIn(item, seen)
seen.append(item)
- self.assertEqual(len(seen), 5)
+ self.assertLength(seen, 5)
def test_property(self):
"""Test that preloading works for properties."""
diff --git a/tests/sparql_tests.py b/tests/sparql_tests.py
index 7a84956..d418c20 100644
--- a/tests/sparql_tests.py
+++ b/tests/sparql_tests.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
"""Test cases for the SPARQL API."""
#
-# (C) Pywikibot team, 2016-2018
+# (C) Pywikibot team, 2016-2019
#
# Distributed under the terms of the MIT license.
#
@@ -102,7 +102,7 @@
q = sparql.SparqlQuery()
res = q.select('SELECT * WHERE { ?x ?y ?z }')
self.assertIsInstance(res, list, 'Result is not a list')
- self.assertEqual(len(res), 2)
+ self.assertLength(res, 2)
self.assertDictEqual(
res[0],
@@ -124,7 +124,7 @@
q = sparql.SparqlQuery()
res = q.select('SELECT * WHERE { ?x ?y ?z }', full_data=True)
self.assertIsInstance(res, list, 'Result is not a list')
- self.assertEqual(len(res), 2)
+ self.assertLength(res, 2)
self.assertIsInstance(res[0]['cat'], sparql.URI, 'Wrong type for
URI')
self.assertEqual(repr(res[0]['cat']),
diff --git a/tests/template_bot_tests.py b/tests/template_bot_tests.py
index 658369d..9bb077f 100644
--- a/tests/template_bot_tests.py
+++ b/tests/template_bot_tests.py
@@ -35,7 +35,7 @@
site=self.site,
text_predicate=predicate)
pages = list(gen)
- self.assertEqual(len(pages), 0)
+ self.assertIsEmpty(pages)
def test_match(self):
"""Test pages with one match without
parameters."""
@@ -47,7 +47,7 @@
site=self.site,
text_predicate=predicate)
pages = list(gen)
- self.assertEqual(len(pages), 1)
+ self.assertLength(pages, 1)
self.assertPageTitlesEqual(pages, ['Pear'], site=self.site)
def test_match_with_params(self):
@@ -60,7 +60,7 @@
site=self.site,
text_predicate=predicate)
pages = list(gen)
- self.assertEqual(len(pages), 1)
+ self.assertLength(pages, 1)
self.assertPageTitlesEqual(pages, ['Pear'], site=self.site)
def test_match_any(self):
@@ -75,7 +75,7 @@
site=self.site,
text_predicate=predicate)
pages = list(gen)
- self.assertEqual(len(pages), 1)
+ self.assertLength(pages, 1)
self.assertPageTitlesEqual(pages, ['Pear'], site=self.site)
# reorder templates
@@ -85,7 +85,7 @@
site=self.site,
text_predicate=predicate)
pages = list(gen)
- self.assertEqual(len(pages), 1)
+ self.assertLength(pages, 1)
self.assertPageTitlesEqual(pages, ['Pear'], site=self.site)
def test_match_msg(self):
@@ -99,7 +99,7 @@
site=self.site,
text_predicate=predicate)
pages = list(gen)
- self.assertEqual(len(pages), 1)
+ self.assertLength(pages, 1)
self.assertPageTitlesEqual(pages, ['Fake page with msg'],
site=self.site)
@@ -114,7 +114,7 @@
site=self.site,
text_predicate=predicate)
pages = list(gen)
- self.assertEqual(len(pages), 1)
+ self.assertLength(pages, 1)
self.assertPageTitlesEqual(
pages, ['Fake page with unnecessary template prefix'],
site=self.site)
@@ -129,7 +129,7 @@
site=self.site,
text_predicate=predicate)
pages = list(gen)
- self.assertEqual(len(pages), 1)
+ self.assertLength(pages, 1)
self.assertPageTitlesEqual(
pages, ['Fake page with nested template'],
site=self.site)
diff --git a/tests/tests_tests.py b/tests/tests_tests.py
index 39232c9..4114a09 100755
--- a/tests/tests_tests.py
+++ b/tests/tests_tests.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-
"""Tests for the tests package."""
#
-# (C) Pywikibot team, 2014-2018
+# (C) Pywikibot team, 2014-2019
#
# Distributed under the terms of the MIT license.
from __future__ import absolute_import, division, unicode_literals
@@ -44,9 +44,52 @@
pages = [pywikibot.Page(self.site, 'Foo'),
pywikibot.Page(self.site, 'Bar'),
pywikibot.Page(self.site, 'Baz')]
- self.assertPageTitlesEqual(pages,
- ['Foo'],
- self.site)
+ self.assertPageTitlesEqual(pages, ['Foo'], self.site)
+
+
+class TestLengthAssert(TestCase):
+
+ """Test length assertion methods."""
+
+ net = False
+
+ seq1 = ('foo', 'bar', 'baz')
+ seq2 = 'foo'
+
+ def test_assert_is_emtpy(self):
+ """Test assertIsEmpty method."""
+ self.assertIsEmpty([])
+ self.assertIsEmpty('')
+
+ @unittest.expectedFailure
+ def test_assert_is_emtpy_fail(self):
+ """Test assertIsEmpty method failing."""
+ self.assertIsEmpty(self.seq1)
+ self.assertIsEmpty(self.seq2)
+
+ def test_assert_is_not_emtpy(self):
+ """Test assertIsNotEmpty method."""
+ self.assertIsNotEmpty(self.seq1)
+ self.assertIsNotEmpty(self.seq2)
+
+ @unittest.expectedFailure
+ def test_assert_is_not_emtpy_fail(self):
+ """Test assertIsNotEmpty method."""
+ self.assertIsNotEmpty([])
+ self.assertIsNotEmpty('')
+
+ def test_assert_length(self):
+ """Test assertIsNotEmpty method."""
+ self.assertLength([], 0)
+ self.assertLength(self.seq1, 3)
+ self.assertLength(self.seq1, self.seq2)
+
+ @unittest.expectedFailure
+ def test_assert_length_fail(self):
+ """Test assertIsNotEmpty method."""
+ self.assertLength([], 1)
+ self.assertLength(self.seq1, 0)
+ self.assertLength(None, self.seq)
if __name__ == '__main__': # pragma: no cover
diff --git a/tests/tools_ip_tests.py b/tests/tools_ip_tests.py
index e53a611..bc2a4d8 100644
--- a/tests/tools_ip_tests.py
+++ b/tests/tools_ip_tests.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-
"""Test IP module/regex."""
#
-# (C) Pywikibot team, 2012-2018
+# (C) Pywikibot team, 2012-2019
#
# Distributed under the terms of the MIT license.
from __future__ import absolute_import, division, unicode_literals
@@ -676,7 +676,7 @@
self._test_T105443_failures()
self.assertEqual(self.fail, 0)
self.assertDeprecationParts('page.ip_regexp', 'tools.ip.is_IP')
- self.assertEqual(self.total, len(self.deprecation_messages))
+ self.assertLength(self.deprecation_messages, self.total)
class IPAddressModuleTestCase(TestIPBase):
diff --git a/tests/tools_tests.py b/tests/tools_tests.py
index 900f366..b507f9e 100644
--- a/tests/tools_tests.py
+++ b/tests/tools_tests.py
@@ -362,7 +362,7 @@
"""Test marker is shown without kwargs."""
stop = 2
it = list(tools.islice_with_ellipsis(self.it, stop))
- self.assertEqual(len(it), stop + 1) # +1 to consider marker.
+ self.assertLength(it, stop + 1) # +1 to consider marker.
self.assertEqual(it[:-1], self.it[:stop])
self.assertEqual(it[-1], '…')
@@ -370,7 +370,7 @@
"""Test correct marker is shown with kwargs.."""
stop = 2
it = list(tools.islice_with_ellipsis(self.it, stop, marker='new'))
- self.assertEqual(len(it), stop + 1) # +1 to consider marker.
+ self.assertLength(it, stop + 1) # +1 to consider marker.
self.assertEqual(it[:-1], self.it[:stop])
self.assertNotEqual(it[-1], '…')
self.assertEqual(it[-1], 'new')
@@ -380,7 +380,7 @@
start = 1
stop = 3
it = list(tools.islice_with_ellipsis(self.it, start, stop))
- self.assertEqual(len(it), stop - start + 1) # +1 to consider marker.
+ self.assertLength(it, stop - start + 1) # +1 to consider marker.
self.assertEqual(it[:-1], self.it[start:stop])
self.assertEqual(it[-1], '…')
@@ -390,7 +390,7 @@
stop = 3
it = list(tools.islice_with_ellipsis(
self.it, start, stop, marker='new'))
- self.assertEqual(len(it), stop - start + 1) # +1 to consider marker.
+ self.assertLength(it, stop - start + 1) # +1 to consider marker.
self.assertEqual(it[:-1], self.it[start:stop])
self.assertNotEqual(it[-1], '…')
self.assertEqual(it[-1], 'new')
@@ -399,14 +399,14 @@
"""Test marker is shown with stop for non empty
iterable."""
stop = 0
it = list(tools.islice_with_ellipsis(self.it, stop))
- self.assertEqual(len(it), stop + 1) # +1 to consider marker.
+ self.assertLength(it, stop + 1) # +1 to consider marker.
self.assertEqual(it[-1], '…')
def test_do_not_show_marker_with_stop_zero(self):
"""Test marker is shown with stop for empty
iterable."""
stop = 0
it = list(tools.islice_with_ellipsis(self.it_null, stop))
- self.assertEqual(len(it), stop)
+ self.assertLength(it, stop)
def test_do_not_show_marker(self):
"""Test marker is not shown when no marker is
specified."""
@@ -420,7 +420,7 @@
"""Test marker is not shown when all elements are
retrieved."""
stop = None
it = list(tools.islice_with_ellipsis(self.it, stop))
- self.assertEqual(len(it), len(self.it))
+ self.assertLength(it, len(self.it))
self.assertEqual(it, self.it)
self.assertNotEqual(it[-1], '…')
@@ -507,7 +507,7 @@
if not key:
key = passthrough
- self.assertEqual(len(deduped), 0)
+ self.assertIsEmpty(deduped)
self.assertEqual(next(deduper), 1)
self.assertEqual(next(deduper), 3)
@@ -538,7 +538,7 @@
if not key:
key = passthrough
- self.assertEqual(len(deduped), 0)
+ self.assertIsEmpty(deduped)
self.assertEqual(next(deduper), '1')
self.assertEqual(next(deduper), '3')
@@ -607,7 +607,7 @@
# Two objects which may be equal do not necessary have the same id.
deduped = set()
deduper = tools.filter_unique(self.decs, container=deduped, key=id)
- self.assertEqual(len(deduped), 0)
+ self.assertIsEmpty(deduped)
for _ in self.decs:
self.assertEqual(id(next(deduper)), deduped.pop())
self.assertRaises(StopIteration, next, deduper)
diff --git a/tests/ui_tests.py b/tests/ui_tests.py
index 18d0c97..0c01d86 100644
--- a/tests/ui_tests.py
+++ b/tests/ui_tests.py
@@ -288,7 +288,7 @@
with warnings.catch_warnings(record=True) as w:
pywikibot.output('output', toStdout=True)
self.assertEqual(newstdout.getvalue(), 'output\n')
- self.assertEqual(len(w), 1)
+ self.assertLength(w, 1)
self.assertEqual(w[0].category, DeprecationWarning)
message = str(w[0].message)
self.assertStringMethod(str.startswith, message,
@@ -817,8 +817,8 @@
expected_color = self._colors[self._index][0]
self._index += 1
self.assertEqual(color, expected_color)
- self.assertEqual(len(self.stream.getvalue()),
- sum(e[1] for e in self._colors[:self._index]))
+ self.assertLength(self.stream.getvalue(),
+ sum(e[1] for e in self._colors[:self._index]))
class FakeWin32Test(FakeUIColorizedTestBase, FakeUITest):
@@ -861,8 +861,8 @@
self._index += 1
color = terminal_interface_win32.windowsColors[color]
self.assertEqual(attribute, color)
- self.assertEqual(len(self.stream.getvalue()),
- sum(e[1] for e in self._colors[:self._index]))
+ self.assertLength(self.stream.getvalue(),
+ sum(e[1] for e in self._colors[:self._index]))
class FakeWin32UncolorizedTest(FakeWin32Test):
diff --git a/tests/upload_tests.py b/tests/upload_tests.py
index 632c836..8dd80a1 100644
--- a/tests/upload_tests.py
+++ b/tests/upload_tests.py
@@ -5,7 +5,7 @@
These tests write to the wiki.
"""
#
-# (C) Pywikibot team, 2014-2018
+# (C) Pywikibot team, 2014-2019
#
# Distributed under the terms of the MIT license.
#
@@ -49,8 +49,8 @@
"""A simple callback not automatically finishing the
upload."""
self.assertCountEqual([w.code for w in warnings], expected_warns)
# by now we know there are only two but just make sure
- assert len(warnings) == len(expected_warns)
- assert len(expected_warns) in [1, 2]
+ self.assertLength(warnings, expected_warns)
+ self.assertIn(len(expected_warns), [1, 2])
if len(expected_warns) == 2:
self.assertEqual(warnings[0].file_key, warnings[1].file_key)
self.assertEqual(warnings[0].offset, warnings[1].offset)
diff --git a/tests/user_tests.py b/tests/user_tests.py
index 12246eb..45da6aa 100644
--- a/tests/user_tests.py
+++ b/tests/user_tests.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
"""Tests for the User page."""
#
-# (C) Pywikibot team, 2016-2018
+# (C) Pywikibot team, 2016-2019
#
# Distributed under the terms of the MIT license.
#
@@ -81,7 +81,7 @@
'Benutzer Diskussion:Xqt/pwb'))
self.assertTrue(user.is_thankable)
contribs = user.contributions(total=10)
- self.assertEqual(len(list(contribs)), 10)
+ self.assertLenth(list(contribs), 10)
self.assertTrue(all(isinstance(contrib, tuple)
for contrib in contribs))
self.assertTrue(all('user' in contrib
@@ -178,7 +178,7 @@
last = uc[0]
for contrib in uc:
self.assertIsInstance(contrib, tuple)
- self.assertEqual(len(contrib), 4)
+ self.assertLenth(contrib, 4)
p, i, t, c = contrib
self.assertIsInstance(p, Page)
self.assertIsInstance(i, int)
diff --git a/tests/wikibase_tests.py b/tests/wikibase_tests.py
index 4f0eb36..25e0c71 100644
--- a/tests/wikibase_tests.py
+++ b/tests/wikibase_tests.py
@@ -55,7 +55,7 @@
def _test_hashable(self, representation):
"""Test that the representation is hashable."""
list_of_dupes = [representation, representation]
- self.assertEqual(len(set(list_of_dupes)), 1)
+ self.assertLength(set(list_of_dupes), 1)
class TestLoadRevisionsCaching(BasePageLoadRevisionsCachingTestBase,
@@ -1646,7 +1646,7 @@
def test_item_is_hashable(self):
"""Ensure that ItemPages are hashable."""
list_of_dupes = [self._page, self._page]
- self.assertEqual(len(set(list_of_dupes)), 1)
+ self.assertLength(set(list_of_dupes), 1)
class TestPageMethodsWithItemTitle(WikidataTestCase, BasePageMethodsTestBase):
@@ -1740,8 +1740,8 @@
wikilinks = list(self.wdp.iterlinks('wikipedia'))
wvlinks = list(self.wdp.iterlinks('wikivoyage'))
- self.assertEqual(len(wikilinks), 3)
- self.assertEqual(len(wvlinks), 2)
+ self.assertLength(wikilinks, 3)
+ self.assertLength(wvlinks, 2)
class TestWriteNormalizeLang(TestCase):
diff --git a/tests/xmlreader_tests.py b/tests/xmlreader_tests.py
index ebd84ba..b3c6198 100644
--- a/tests/xmlreader_tests.py
+++ b/tests/xmlreader_tests.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
"""Tests for xmlreader module."""
#
-# (C) Pywikibot team, 2009-2018
+# (C) Pywikibot team, 2009-2019
#
# Distributed under the terms of the MIT license.
#
@@ -34,7 +34,7 @@
def test_XmlDumpAllRevs(self):
"""Test loading all revisions."""
pages = self._get_entries('article-pear.xml', allrevisions=True)
- self.assertEqual(4, len(pages))
+ self.assertLength(pages, 4)
self.assertEqual('Automated conversion', pages[0].comment)
self.assertEqual('Pear', pages[0].title)
self.assertEqual('24278', pages[0].id)
@@ -45,7 +45,7 @@
def test_XmlDumpFirstRev(self):
"""Test loading the first revision."""
pages = self._get_entries('article-pear.xml', allrevisions=False)
- self.assertEqual(1, len(pages))
+ self.assertLength(pages, 1)
self.assertEqual('Automated conversion', pages[0].comment)
self.assertEqual('Pear', pages[0].title)
self.assertEqual('24278', pages[0].id)
@@ -93,7 +93,7 @@
def test_pair(self):
"""Test reading the main page/user talk page pair
file."""
entries = self._get_entries('pair-0.10.xml', allrevisions=True)
- self.assertEqual(4, len(entries))
+ self.assertLength(entries, 4)
self.assertTrue(all(entry.username == 'Carlossuarez46'
for entry in entries))
self.assertTrue(all(entry.isredirect is False for entry in entries))
@@ -101,7 +101,7 @@
articles = entries[0:2]
talks = entries[2:4]
- self.assertEqual(2, len(articles))
+ self.assertLength(articles, 2)
self.assertTrue(all(entry.id == '19252820' for entry in articles))
self.assertTrue(all(entry.title == 'Çullu, Agdam'
for entry in articles))
@@ -109,7 +109,7 @@
for entry in articles))
self.assertEqual(articles[0].text, '#REDIRECT [[Çullu, Quzanlı]]')
- self.assertEqual(2, len(talks))
+ self.assertLength(talks, 2)
self.assertTrue(all(entry.id == '19252824' for entry in talks))
self.assertTrue(all(entry.title == 'Talk:Çullu, Agdam'
for entry in talks))
--
To view, visit
https://gerrit.wikimedia.org/r/482503
To unsubscribe, or for help writing mail filters, visit
https://gerrit.wikimedia.org/r/settings
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: I18a01044d9543a3d9984330468071aecf70f0cbe
Gerrit-Change-Number: 482503
Gerrit-PatchSet: 11
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: D3r1ck01 <xsavitar.wiki(a)aol.com>
Gerrit-Reviewer: Dalba <dalba.wiki(a)gmail.com>
Gerrit-Reviewer: Dvorapa <dvorapa(a)seznam.cz>
Gerrit-Reviewer: Framawiki <framawiki(a)tools.wmflabs.org>
Gerrit-Reviewer: Mpaa <mpaa.wiki(a)gmail.com>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot (75)