[#8445] pytest - remove alluratest.tools, dtadiff, nose asserts
diff --git a/Allura/allura/tests/decorators.py b/Allura/allura/tests/decorators.py
index 4e6711a..53aa5df 100644
--- a/Allura/allura/tests/decorators.py
+++ b/Allura/allura/tests/decorators.py
@@ -21,7 +21,6 @@
 import contextlib
 from six.moves.urllib.parse import parse_qs
 
-from alluratest.tools import assert_equal
 from ming.orm.ormsession import ThreadLocalORMSession
 from tg import tmpl_context as c
 from mock import patch
diff --git a/Allura/allura/tests/functional/test_admin.py b/Allura/allura/tests/functional/test_admin.py
index a140f17..20fc7a5 100644
--- a/Allura/allura/tests/functional/test_admin.py
+++ b/Allura/allura/tests/functional/test_admin.py
@@ -23,18 +23,16 @@
 
 import tg
 import PIL
-from alluratest.tools import assert_equals, assert_in, assert_not_in, assert_is_not_none, assert_greater
 from ming.orm.ormsession import ThreadLocalORMSession
 from tg import expose
 from tg import tmpl_context as c, app_globals as g
 import mock
-import six
 
 import allura
 from allura.tests import TestController
 from alluratest.pytest_helpers import with_nose_compatibility
 from allura.tests import decorators as td
-from allura.tests.decorators import audits, out_audits
+from allura.tests.decorators import audits
 from alluratest.controller import TestRestApiBase, setup_trove_categories
 from allura import model as M
 from allura.app import SitemapEntry
diff --git a/Allura/allura/tests/functional/test_gravatar.py b/Allura/allura/tests/functional/test_gravatar.py
index 2886df3..b42f64a 100644
--- a/Allura/allura/tests/functional/test_gravatar.py
+++ b/Allura/allura/tests/functional/test_gravatar.py
@@ -18,7 +18,6 @@
 from six.moves.urllib.parse import urlparse, parse_qs
 
 import tg
-from alluratest.tools import assert_equal
 from mock import patch
 
 from allura.tests import TestController
diff --git a/Allura/allura/tests/functional/test_home.py b/Allura/allura/tests/functional/test_home.py
index a27febb..81c11a1 100644
--- a/Allura/allura/tests/functional/test_home.py
+++ b/Allura/allura/tests/functional/test_home.py
@@ -20,7 +20,6 @@
 import os
 
 from tg import tmpl_context as c
-from alluratest.tools import assert_equal, assert_not_in, assert_in
 from ming.orm import ThreadLocalORMSession
 
 import allura
diff --git a/Allura/allura/tests/functional/test_neighborhood.py b/Allura/allura/tests/functional/test_neighborhood.py
index b123cb7..7261e0c 100644
--- a/Allura/allura/tests/functional/test_neighborhood.py
+++ b/Allura/allura/tests/functional/test_neighborhood.py
@@ -25,7 +25,6 @@
 import PIL
 from mock import patch
 from tg import config
-from alluratest.tools import assert_equal, assert_in, assert_not_equal
 from ming.orm.ormsession import ThreadLocalORMSession, session
 from paste.httpexceptions import HTTPFound, HTTPMovedPermanently
 from tg import app_globals as g, tmpl_context as c
diff --git a/Allura/allura/tests/functional/test_personal_dashboard.py b/Allura/allura/tests/functional/test_personal_dashboard.py
index c1f7d3c..06c73de 100644
--- a/Allura/allura/tests/functional/test_personal_dashboard.py
+++ b/Allura/allura/tests/functional/test_personal_dashboard.py
@@ -20,7 +20,6 @@
 import tg
 
 from ming.orm import ThreadLocalORMSession, ThreadLocalODMSession
-from alluratest.tools import assert_equal, assert_in, assert_not_in
 from tg import tmpl_context as c
 
 from allura import model as M
diff --git a/Allura/allura/tests/functional/test_rest.py b/Allura/allura/tests/functional/test_rest.py
index c2a8cef..26d3b56 100644
--- a/Allura/allura/tests/functional/test_rest.py
+++ b/Allura/allura/tests/functional/test_rest.py
@@ -22,7 +22,6 @@
 from bson import ObjectId
 from tg import app_globals as g
 import mock
-from alluratest.tools import assert_equal, assert_in, assert_not_in
 from ming.odm import ThreadLocalODMSession
 from tg import config
 
diff --git a/Allura/allura/tests/functional/test_root.py b/Allura/allura/tests/functional/test_root.py
index 633bdeb..ff19626 100644
--- a/Allura/allura/tests/functional/test_root.py
+++ b/Allura/allura/tests/functional/test_root.py
@@ -29,10 +29,8 @@
 import os
 from unittest import skipIf
 
-import six
-
 from tg import tmpl_context as c
-from alluratest.tools import assert_equal, module_not_available
+from alluratest.tools import module_not_available
 from ming.orm.ormsession import ThreadLocalORMSession
 import mock
 import tg
diff --git a/Allura/allura/tests/functional/test_site_admin.py b/Allura/allura/tests/functional/test_site_admin.py
index ec743bb..788fb4f 100644
--- a/Allura/allura/tests/functional/test_site_admin.py
+++ b/Allura/allura/tests/functional/test_site_admin.py
@@ -20,7 +20,6 @@
 import bson
 
 from mock import patch, MagicMock
-from alluratest.tools import assert_equal, assert_in, assert_not_in
 from ming.odm import ThreadLocalORMSession
 from tg import tmpl_context as c
 from tg import config
@@ -32,7 +31,6 @@
 from allura.lib import helpers as h
 from allura.lib.decorators import task
 from allura.lib.plugin import LocalAuthenticationProvider
-import six
 from alluratest.pytest_helpers import with_nose_compatibility
 
 
diff --git a/Allura/allura/tests/functional/test_trovecategory.py b/Allura/allura/tests/functional/test_trovecategory.py
index 76473d3..ae9057d 100644
--- a/Allura/allura/tests/functional/test_trovecategory.py
+++ b/Allura/allura/tests/functional/test_trovecategory.py
@@ -18,7 +18,6 @@
 import mock
 
 from tg import config
-from alluratest.tools import assert_equals, assert_true, assert_in, assert_equal
 from ming.orm import session
 
 from allura import model as M
diff --git a/Allura/allura/tests/functional/test_user_profile.py b/Allura/allura/tests/functional/test_user_profile.py
index 353a99f..2a5e867 100644
--- a/Allura/allura/tests/functional/test_user_profile.py
+++ b/Allura/allura/tests/functional/test_user_profile.py
@@ -17,7 +17,6 @@
 
 import mock
 import tg
-from alluratest.tools import assert_equal, assert_in, assert_not_in
 
 from alluratest.controller import TestRestApiBase
 from allura.model import Project, User
diff --git a/Allura/allura/tests/model/test_filesystem.py b/Allura/allura/tests/model/test_filesystem.py
index fe88d8a..5625df2 100644
--- a/Allura/allura/tests/model/test_filesystem.py
+++ b/Allura/allura/tests/model/test_filesystem.py
@@ -22,7 +22,6 @@
 import ming
 from tg import tmpl_context as c
 from ming.orm import session, Mapper
-from alluratest.tools import assert_equal
 from mock import patch
 from webob import Request, Response
 
diff --git a/Allura/allura/tests/model/test_neighborhood.py b/Allura/allura/tests/model/test_neighborhood.py
index 2473708..aaa6a96 100644
--- a/Allura/allura/tests/model/test_neighborhood.py
+++ b/Allura/allura/tests/model/test_neighborhood.py
@@ -18,7 +18,6 @@
 """
 Model tests for neighborhood
 """
-from alluratest.tools import with_setup
 
 from allura import model as M
 from allura.tests import decorators as td
diff --git a/Allura/allura/tests/model/test_notification.py b/Allura/allura/tests/model/test_notification.py
index 33d2547..774c8da 100644
--- a/Allura/allura/tests/model/test_notification.py
+++ b/Allura/allura/tests/model/test_notification.py
@@ -20,7 +20,6 @@
 import collections
 
 from tg import tmpl_context as c, app_globals as g
-from alluratest.tools import assert_equal, assert_in
 from ming.orm import ThreadLocalORMSession
 import mock
 import bson
diff --git a/Allura/allura/tests/model/test_project.py b/Allura/allura/tests/model/test_project.py
index 6a1d44a..c4daf94 100644
--- a/Allura/allura/tests/model/test_project.py
+++ b/Allura/allura/tests/model/test_project.py
@@ -18,7 +18,6 @@
 """
 Model tests for project
 """
-from alluratest.tools import with_setup, assert_equals, assert_in
 from tg import tmpl_context as c
 from ming.orm.ormsession import ThreadLocalORMSession
 from formencode import validators as fev
diff --git a/Allura/allura/tests/model/test_repo.py b/Allura/allura/tests/model/test_repo.py
index 84d26bd..b5fffda 100644
--- a/Allura/allura/tests/model/test_repo.py
+++ b/Allura/allura/tests/model/test_repo.py
@@ -20,7 +20,6 @@
 
 import unittest
 import mock
-from alluratest.tools import assert_equal
 from tg import tmpl_context as c
 from bson import ObjectId
 from ming.orm import session
diff --git a/Allura/allura/tests/model/test_timeline.py b/Allura/allura/tests/model/test_timeline.py
index 00e7ea0..f5af23b 100644
--- a/Allura/allura/tests/model/test_timeline.py
+++ b/Allura/allura/tests/model/test_timeline.py
@@ -15,8 +15,6 @@
 #       specific language governing permissions and limitations
 #       under the License.
 
-from alluratest.tools import assert_equal
-
 from allura import model as M
 from allura.tests import decorators as td
 from alluratest.controller import setup_basic_test, setup_global_objects
diff --git a/Allura/allura/tests/scripts/test_create_sitemap_files.py b/Allura/allura/tests/scripts/test_create_sitemap_files.py
index e9d40ec..906ff60 100644
--- a/Allura/allura/tests/scripts/test_create_sitemap_files.py
+++ b/Allura/allura/tests/scripts/test_create_sitemap_files.py
@@ -20,7 +20,6 @@
 import xml.etree.ElementTree as ET
 
 from tg import tmpl_context as c
-from alluratest.tools import assert_in, assert_not_in
 from testfixtures import TempDirectory
 
 from alluratest.controller import setup_basic_test
diff --git a/Allura/allura/tests/scripts/test_delete_projects.py b/Allura/allura/tests/scripts/test_delete_projects.py
index d941435..12d6d69 100644
--- a/Allura/allura/tests/scripts/test_delete_projects.py
+++ b/Allura/allura/tests/scripts/test_delete_projects.py
@@ -18,7 +18,6 @@
 from ming.odm import session, Mapper, ThreadLocalODMSession
 from mock import patch
 from tg import app_globals as g
-from alluratest.tools import assert_equal
 
 from alluratest.controller import TestController
 from allura.tests.decorators import audits, out_audits, with_user_project
diff --git a/Allura/allura/tests/scripts/test_misc_scripts.py b/Allura/allura/tests/scripts/test_misc_scripts.py
index 83c8c14..174bf9c 100644
--- a/Allura/allura/tests/scripts/test_misc_scripts.py
+++ b/Allura/allura/tests/scripts/test_misc_scripts.py
@@ -16,7 +16,6 @@
 #       under the License.
 
 from bson import ObjectId
-from alluratest.tools import assert_equal
 
 from allura.scripts.clear_old_notifications import ClearOldNotifications
 from alluratest.controller import setup_basic_test
diff --git a/Allura/allura/tests/scripts/test_reindexes.py b/Allura/allura/tests/scripts/test_reindexes.py
index c6da7ad..e1f9950 100644
--- a/Allura/allura/tests/scripts/test_reindexes.py
+++ b/Allura/allura/tests/scripts/test_reindexes.py
@@ -14,7 +14,6 @@
 #       KIND, either express or implied.  See the License for the
 #       specific language governing permissions and limitations
 #       under the License.
-from alluratest.tools import assert_in, assert_equal
 from testfixtures import LogCapture
 
 from allura.scripts.reindex_projects import ReindexProjects
diff --git a/Allura/allura/tests/templates/jinja_master/test_lib.py b/Allura/allura/tests/templates/jinja_master/test_lib.py
index 8c46da0..84108aa 100644
--- a/Allura/allura/tests/templates/jinja_master/test_lib.py
+++ b/Allura/allura/tests/templates/jinja_master/test_lib.py
@@ -17,10 +17,8 @@
 
 from tg import config, app_globals as g
 from mock import Mock
-from alluratest.tools import assert_equal
 
-import ming
-from allura.config.app_cfg import ForgeConfig, AlluraJinjaRenderer
+from allura.config.app_cfg import AlluraJinjaRenderer
 from alluratest.controller import setup_basic_test
 from alluratest.pytest_helpers import with_nose_compatibility
 
diff --git a/Allura/allura/tests/test_app.py b/Allura/allura/tests/test_app.py
index 8a6924c..997dd13 100644
--- a/Allura/allura/tests/test_app.py
+++ b/Allura/allura/tests/test_app.py
@@ -23,7 +23,6 @@
 from textwrap import dedent
 
 from alluratest.controller import setup_unit_test
-from alluratest.tools import with_setup
 from allura import app
 from allura.lib.app_globals import Icon
 from allura.lib import mail_util
diff --git a/Allura/allura/tests/test_commands.py b/Allura/allura/tests/test_commands.py
index 18026cc..9e13f60 100644
--- a/Allura/allura/tests/test_commands.py
+++ b/Allura/allura/tests/test_commands.py
@@ -18,12 +18,8 @@
 
 import datetime
 
-import six
-from alluratest.tools import with_setup
 from testfixtures import OutputCapture
 
-from datadiff.tools import assert_equal
-
 from ming.base import Object
 from ming.orm import ThreadLocalORMSession
 from mock import Mock, call, patch
diff --git a/Allura/allura/tests/test_decorators.py b/Allura/allura/tests/test_decorators.py
index 71b70d0..2ef77cd 100644
--- a/Allura/allura/tests/test_decorators.py
+++ b/Allura/allura/tests/test_decorators.py
@@ -20,7 +20,6 @@
 import random
 import gc
 
-from alluratest.tools import assert_equal, assert_not_equal
 from alluratest.pytest_helpers import with_nose_compatibility
 from allura.lib.decorators import task, memoize
 from alluratest.controller import setup_basic_test, setup_global_objects
diff --git a/Allura/allura/tests/test_helpers.py b/Allura/allura/tests/test_helpers.py
index 1e02293..46703b1 100644
--- a/Allura/allura/tests/test_helpers.py
+++ b/Allura/allura/tests/test_helpers.py
@@ -23,8 +23,7 @@
 import PIL
 from mock import Mock, patch
 from tg import tmpl_context as c
-from alluratest.tools import module_not_available, with_setup
-from datadiff import tools as dd
+from alluratest.tools import module_not_available
 from webob import Request
 from webob.exc import HTTPUnauthorized
 from ming.orm import ThreadLocalORMSession
@@ -392,22 +391,19 @@
 http://blah.com/?x=y&a=b - not escaped either
 '''
 
-    dd.assert_equal(h.plain2markdown(text), expected)
+    assert h.plain2markdown(text) == expected
 
-    dd.assert_equal(
-        h.plain2markdown('a foo  bar\n\n    code here?',
-                         preserve_multiple_spaces=True),
-        'a foo  bar\n\n    code here?')
+    assert h.plain2markdown('a foo  bar\n\n    code here?',
+                            preserve_multiple_spaces=True) == \
+        'a foo  bar\n\n    code here?'
 
-    dd.assert_equal(
-        h.plain2markdown('\ttab before (stuff)',
-                         preserve_multiple_spaces=True),
-        r'    tab before \(stuff\)')
+    assert h.plain2markdown('\ttab before (stuff)',
+                            preserve_multiple_spaces=True) == \
+        r'    tab before \(stuff\)'
 
-    dd.assert_equal(
-        h.plain2markdown('\ttab before (stuff)',
-                         preserve_multiple_spaces=False),
-        r'tab before \(stuff\)')
+    assert h.plain2markdown('\ttab before (stuff)',
+                            preserve_multiple_spaces=False) == \
+        r'tab before \(stuff\)'
 
 
 @td.without_module('html2text')
@@ -443,22 +439,19 @@
 back\\\-slash escaped
 '''
 
-    dd.assert_equal(h.plain2markdown(text), expected)
+    assert h.plain2markdown(text) == expected
 
-    dd.assert_equal(
-        h.plain2markdown('a foo  bar\n\n    code here?',
-                         preserve_multiple_spaces=True),
-        'a foo  bar\n\n    code here?')
+    assert h.plain2markdown('a foo  bar\n\n    code here?',
+                            preserve_multiple_spaces=True) == \
+        'a foo  bar\n\n    code here?'
 
-    dd.assert_equal(
-        h.plain2markdown('\ttab before (stuff)',
-                         preserve_multiple_spaces=True),
-        r'    tab before \(stuff\)')
+    assert h.plain2markdown('\ttab before (stuff)',
+                            preserve_multiple_spaces=True) == \
+        r'    tab before \(stuff\)'
 
-    dd.assert_equal(
-        h.plain2markdown('\ttab before (stuff)',
-                         preserve_multiple_spaces=False),
-        r'tab before \(stuff\)')
+    assert h.plain2markdown('\ttab before (stuff)',
+                            preserve_multiple_spaces=False) == \
+        r'tab before \(stuff\)'
 
 
 @with_nose_compatibility
diff --git a/Allura/allura/tests/test_middlewares.py b/Allura/allura/tests/test_middlewares.py
index b48e276..2435ba8 100644
--- a/Allura/allura/tests/test_middlewares.py
+++ b/Allura/allura/tests/test_middlewares.py
@@ -16,8 +16,6 @@
 #       under the License.
 
 from mock import MagicMock, patch
-from datadiff.tools import assert_equal
-from alluratest.tools import assert_not_equal
 from allura.lib.custom_middleware import CORSMiddleware
 from alluratest.pytest_helpers import with_nose_compatibility
 
diff --git a/Allura/allura/tests/test_tasks.py b/Allura/allura/tests/test_tasks.py
index 2aeef65..80fffbb 100644
--- a/Allura/allura/tests/test_tasks.py
+++ b/Allura/allura/tests/test_tasks.py
@@ -17,7 +17,6 @@
 
 import operator
 import shutil
-import sys
 from textwrap import dedent
 import unittest
 
@@ -30,8 +29,6 @@
 import mock
 from tg import tmpl_context as c, app_globals as g
 
-from datadiff.tools import assert_equal
-from nose.tools import assert_in, assert_less, assert_less_equal
 from ming.orm import FieldProperty, Mapper
 from ming.orm import ThreadLocalORMSession
 from testfixtures import LogCapture
@@ -41,8 +38,6 @@
 from allura import model as M
 from allura.command.taskd import TaskdCommand
 from allura.lib import helpers as h
-from allura.lib import search
-from allura.lib.exceptions import CompoundError
 from allura.lib.mail_util import MAX_MAIL_LINE_OCTETS
 from allura.tasks import event_tasks
 from allura.tasks import index_tasks
diff --git a/Allura/allura/tests/test_webhooks.py b/Allura/allura/tests/test_webhooks.py
index b2958d7..4494d9a 100644
--- a/Allura/allura/tests/test_webhooks.py
+++ b/Allura/allura/tests/test_webhooks.py
@@ -22,7 +22,6 @@
 
 from mock import Mock, MagicMock, patch, call
 import pytest
-from datadiff import tools as dd
 from formencode import Invalid
 from ming.odm import session
 from tg import tmpl_context as c
@@ -669,7 +668,7 @@
             'hook_url': 'http://httpbin.org/post',
             'mod_date': self.wh.mod_date,
         }
-        dd.assert_equal(self.wh.__json__(), expected)
+        assert self.wh.__json__() == expected
 
 
 @with_nose_compatibility
@@ -727,7 +726,7 @@
             'webhooks': webhooks,
             'limits': {'repo-push': {'max': 3, 'used': 3}},
         }
-        dd.assert_equal(r.json, expected)
+        assert r.json == expected
 
     def test_webhook_GET_404(self):
         r = self.api_get(self.url + '/repo-push/invalid', status=404)
@@ -743,8 +742,8 @@
             'hook_url': 'http://httpbin.org/post/0',
             'mod_date': str(webhook.mod_date),
         }
-        dd.assert_equal(r.status_int, 200)
-        dd.assert_equal(r.json, expected)
+        assert r.status_int == 200
+        assert r.json == expected
 
     def test_create_validation(self):
         assert M.Webhook.query.find().count() == len(self.webhooks)
@@ -787,7 +786,7 @@
             'hook_url': data['url'],
             'mod_date': str(webhook.mod_date),
         }
-        dd.assert_equal(r.json, expected)
+        assert r.json == expected
         assert M.Webhook.query.find().count() == len(self.webhooks) + 1
 
     def test_create_duplicates(self):
@@ -847,7 +846,7 @@
             'hook_url': data['url'],
             'mod_date': str(webhook.mod_date),
         }
-        dd.assert_equal(r.json, expected)
+        assert r.json == expected
 
         # change only secret
         data = {'secret': 'new-secret'}
@@ -867,7 +866,7 @@
             'hook_url': 'http://hook.slack.com/abcd',
             'mod_date': str(webhook.mod_date),
         }
-        dd.assert_equal(r.json, expected)
+        assert r.json == expected
 
     def test_edit_duplicates(self):
         webhook = self.webhooks[0]
@@ -891,7 +890,7 @@
             webhook.hook_url, self.git.config.url())
         with td.audits(msg):
             r = self.api_delete(url, status=200)
-        dd.assert_equal(r.json, {'result': 'ok'})
+        assert r.json == {'result': 'ok'}
         assert M.Webhook.query.find().count() == 2
         assert M.Webhook.query.get(_id=webhook._id) == None
 
diff --git a/Allura/allura/tests/unit/controllers/test_discussion_moderation_controller.py b/Allura/allura/tests/unit/controllers/test_discussion_moderation_controller.py
index 3ad4ed8..133301f 100644
--- a/Allura/allura/tests/unit/controllers/test_discussion_moderation_controller.py
+++ b/Allura/allura/tests/unit/controllers/test_discussion_moderation_controller.py
@@ -15,7 +15,6 @@
 #       specific language governing permissions and limitations
 #       under the License.
 
-from alluratest.tools import assert_equal
 from mock import Mock, patch
 from ming.orm import ThreadLocalORMSession, session
 
diff --git a/Allura/allura/tests/unit/phone/test_nexmo.py b/Allura/allura/tests/unit/phone/test_nexmo.py
index 2902739..1b6139f 100644
--- a/Allura/allura/tests/unit/phone/test_nexmo.py
+++ b/Allura/allura/tests/unit/phone/test_nexmo.py
@@ -17,8 +17,6 @@
 
 import json
 from mock import patch
-from datadiff.tools import assert_equal
-from alluratest.tools import assert_in, assert_not_in
 from alluratest.pytest_helpers import with_nose_compatibility
 
 from allura.lib.phone.nexmo import NexmoPhoneService
diff --git a/Allura/allura/tests/unit/phone/test_phone_service.py b/Allura/allura/tests/unit/phone/test_phone_service.py
index e4af199..7395944 100644
--- a/Allura/allura/tests/unit/phone/test_phone_service.py
+++ b/Allura/allura/tests/unit/phone/test_phone_service.py
@@ -15,9 +15,6 @@
 #       specific language governing permissions and limitations
 #       under the License.
 
-from alluratest.tools import assert_true
-from datadiff.tools import assert_equal
-
 from allura.lib.phone import PhoneService
 from alluratest.pytest_helpers import with_nose_compatibility
 
diff --git a/Allura/allura/tests/unit/spam/test_spam_filter.py b/Allura/allura/tests/unit/spam/test_spam_filter.py
index f907b41..93b01b9 100644
--- a/Allura/allura/tests/unit/spam/test_spam_filter.py
+++ b/Allura/allura/tests/unit/spam/test_spam_filter.py
@@ -19,7 +19,6 @@
 import unittest
 
 from ming.odm import ThreadLocalORMSession
-from alluratest.tools import assert_equal
 
 from allura.lib.spam import SpamFilter, ChainedSpamFilter
 from allura import model as M
diff --git a/Allura/allura/tests/unit/spam/test_stopforumspam.py b/Allura/allura/tests/unit/spam/test_stopforumspam.py
index 7a1bd31..296f63a 100644
--- a/Allura/allura/tests/unit/spam/test_stopforumspam.py
+++ b/Allura/allura/tests/unit/spam/test_stopforumspam.py
@@ -19,7 +19,6 @@
 import mock
 
 from bson import ObjectId
-from alluratest.tools import assert_equal
 
 from allura.lib.spam.stopforumspamfilter import StopForumSpamSpamFilter
 from alluratest.pytest_helpers import with_nose_compatibility
diff --git a/Allura/allura/tests/unit/test_helpers/test_ago.py b/Allura/allura/tests/unit/test_helpers/test_ago.py
index a8e4c90..ee4d092 100644
--- a/Allura/allura/tests/unit/test_helpers/test_ago.py
+++ b/Allura/allura/tests/unit/test_helpers/test_ago.py
@@ -18,7 +18,6 @@
 from datetime import datetime
 
 from mock import patch
-from alluratest.tools import assert_equal
 
 from allura.lib import helpers
 from alluratest.pytest_helpers import with_nose_compatibility
diff --git a/Allura/allura/tests/unit/test_ldap_auth_provider.py b/Allura/allura/tests/unit/test_ldap_auth_provider.py
index bc17ce9..c66da2b 100644
--- a/Allura/allura/tests/unit/test_ldap_auth_provider.py
+++ b/Allura/allura/tests/unit/test_ldap_auth_provider.py
@@ -17,11 +17,10 @@
 
 import calendar
 import platform
-from datetime import datetime, timedelta
+from datetime import datetime
 
 from bson import ObjectId
 from mock import patch, Mock
-from alluratest.tools import assert_equal, assert_not_equal, assert_true
 from unittest import SkipTest
 from webob import Request
 from ming.orm.ormsession import ThreadLocalORMSession
diff --git a/Allura/allura/tests/unit/test_repo.py b/Allura/allura/tests/unit/test_repo.py
index a33d8c6..f67e69a 100644
--- a/Allura/allura/tests/unit/test_repo.py
+++ b/Allura/allura/tests/unit/test_repo.py
@@ -20,8 +20,6 @@
 
 import six
 from mock import patch, Mock, MagicMock, call
-from alluratest.tools import assert_equal
-from datadiff import tools as dd
 
 from tg import tmpl_context as c
 
@@ -320,8 +318,8 @@
 
     def test_no_branches(self):
         b, t = _group_commits(self.repo, ['3', '2', '1'])
-        dd.assert_equal(b, {'__default__': ['3', '2', '1']})
-        dd.assert_equal(t, {})
+        assert b == {'__default__': ['3', '2', '1']}
+        assert t == {}
 
     def test_branches_and_tags(self):
         self.repo.symbolics_for_commit.side_effect = [
@@ -330,8 +328,8 @@
             ([], []),
         ]
         b, t = _group_commits(self.repo, ['3', '2', '1'])
-        dd.assert_equal(b, {'master': ['3', '2', '1']})
-        dd.assert_equal(t, {'v1.1': ['3', '2', '1']})
+        assert b == {'master': ['3', '2', '1']}
+        assert t == {'v1.1': ['3', '2', '1']}
 
     def test_multiple_branches(self):
         self.repo.symbolics_for_commit.side_effect = [
@@ -340,8 +338,8 @@
             (['test1', 'test2'], []),
         ]
         b, t = _group_commits(self.repo, ['3', '2', '1'])
-        dd.assert_equal(b, {'master': ['3', '2'],
-                            'test1': ['1'],
-                            'test2': ['1']})
-        dd.assert_equal(t, {'v1.1': ['3'],
-                            'v1.0': ['2', '1']})
+        assert b == {'master': ['3', '2'],
+                     'test1': ['1'],
+                     'test2': ['1']}
+        assert t == {'v1.1': ['3'],
+                     'v1.0': ['2', '1']}
diff --git a/Allura/allura/tests/unit/test_solr.py b/Allura/allura/tests/unit/test_solr.py
index fa23bc1..8d15e65 100644
--- a/Allura/allura/tests/unit/test_solr.py
+++ b/Allura/allura/tests/unit/test_solr.py
@@ -18,7 +18,6 @@
 import unittest
 
 import mock
-from datadiff.tools import assert_equal
 from markupsafe import Markup
 
 from allura.lib import helpers as h
diff --git a/ForgeActivity/forgeactivity/tests/functional/test_rest.py b/ForgeActivity/forgeactivity/tests/functional/test_rest.py
index 5ee7b6b..39db63a 100644
--- a/ForgeActivity/forgeactivity/tests/functional/test_rest.py
+++ b/ForgeActivity/forgeactivity/tests/functional/test_rest.py
@@ -15,8 +15,6 @@
 #       specific language governing permissions and limitations
 #       under the License.
 
-from datadiff.tools import assert_equal
-
 from tg import config
 from alluratest.controller import TestRestApiBase
 
diff --git a/ForgeActivity/forgeactivity/tests/functional/test_root.py b/ForgeActivity/forgeactivity/tests/functional/test_root.py
index 565576e..5860ac7 100644
--- a/ForgeActivity/forgeactivity/tests/functional/test_root.py
+++ b/ForgeActivity/forgeactivity/tests/functional/test_root.py
@@ -21,7 +21,6 @@
 from tg import config
 from bson import ObjectId
 import dateutil.parser
-from alluratest.tools import assert_equal
 from tg import app_globals as g
 from activitystream.storage.mingstorage import Activity
 from ming.odm import ThreadLocalODMSession
diff --git a/ForgeBlog/forgeblog/tests/functional/test_feeds.py b/ForgeBlog/forgeblog/tests/functional/test_feeds.py
index 530f8bd..dd68b0e 100644
--- a/ForgeBlog/forgeblog/tests/functional/test_feeds.py
+++ b/ForgeBlog/forgeblog/tests/functional/test_feeds.py
@@ -18,7 +18,6 @@
 
 import datetime
 
-from alluratest.tools import assert_in, assert_not_in
 from ming.orm.ormsession import ThreadLocalORMSession
 from tg import tmpl_context as c
 
diff --git a/ForgeBlog/forgeblog/tests/functional/test_rest.py b/ForgeBlog/forgeblog/tests/functional/test_rest.py
index 068a5e9..59c06d5 100644
--- a/ForgeBlog/forgeblog/tests/functional/test_rest.py
+++ b/ForgeBlog/forgeblog/tests/functional/test_rest.py
@@ -17,7 +17,6 @@
 from datetime import date
 
 import tg
-from alluratest.tools import assert_equal, assert_in
 
 from allura.lib import helpers as h
 from allura.tests import decorators as td
diff --git a/ForgeBlog/forgeblog/tests/functional/test_root.py b/ForgeBlog/forgeblog/tests/functional/test_root.py
index c0b18e4..7e8bc73 100644
--- a/ForgeBlog/forgeblog/tests/functional/test_root.py
+++ b/ForgeBlog/forgeblog/tests/functional/test_root.py
@@ -19,7 +19,6 @@
 import json
 
 import tg
-from alluratest.tools import assert_equal, assert_in
 from mock import patch
 
 from allura.lib import helpers as h
diff --git a/ForgeBlog/forgeblog/tests/test_app.py b/ForgeBlog/forgeblog/tests/test_app.py
index c61b0a0..86ecba4 100644
--- a/ForgeBlog/forgeblog/tests/test_app.py
+++ b/ForgeBlog/forgeblog/tests/test_app.py
@@ -21,7 +21,6 @@
 from cgi import FieldStorage
 from io import BytesIO
 
-from alluratest.tools import assert_equal
 from tg import tmpl_context as c
 from ming.orm import ThreadLocalORMSession
 
diff --git a/ForgeBlog/forgeblog/tests/test_commands.py b/ForgeBlog/forgeblog/tests/test_commands.py
index 3b82d68..1728dbf 100644
--- a/ForgeBlog/forgeblog/tests/test_commands.py
+++ b/ForgeBlog/forgeblog/tests/test_commands.py
@@ -16,8 +16,6 @@
 #       under the License.
 
 from datetime import datetime, timedelta
-from tg import app_globals as g
-from datadiff.tools import assert_equal
 from unittest import skipIf
 import pkg_resources
 import mock
diff --git a/ForgeBlog/forgeblog/tests/unit/test_blog_post.py b/ForgeBlog/forgeblog/tests/unit/test_blog_post.py
index 56c5e29..19559ff 100644
--- a/ForgeBlog/forgeblog/tests/unit/test_blog_post.py
+++ b/ForgeBlog/forgeblog/tests/unit/test_blog_post.py
@@ -16,7 +16,6 @@
 #       under the License.
 
 from datetime import datetime
-from alluratest.tools import assert_equal, assert_true
 from tg import tmpl_context as c
 
 from forgeblog import model as M
diff --git a/ForgeChat/forgechat/tests/functional/test_root.py b/ForgeChat/forgechat/tests/functional/test_root.py
index 024e3a4..5e7e739 100644
--- a/ForgeChat/forgechat/tests/functional/test_root.py
+++ b/ForgeChat/forgechat/tests/functional/test_root.py
@@ -16,7 +16,6 @@
 #       under the License.
 
 import json
-from datadiff.tools import assert_equal
 
 from alluratest.controller import TestController
 from allura.tests.decorators import with_tool
diff --git a/ForgeDiscussion/forgediscussion/tests/functional/test_import.py b/ForgeDiscussion/forgediscussion/tests/functional/test_import.py
index 1219d2a..bf4cf6d 100644
--- a/ForgeDiscussion/forgediscussion/tests/functional/test_import.py
+++ b/ForgeDiscussion/forgediscussion/tests/functional/test_import.py
@@ -17,14 +17,9 @@
 
 import os
 import json
-from datetime import datetime, timedelta
-from alluratest.tools import assert_equal
 
-import ming
 from tg import config
-from tg import tmpl_context as c
 
-from allura import model as M
 from allura.lib import helpers as h
 from alluratest.controller import TestRestApiBase
 
diff --git a/ForgeDiscussion/forgediscussion/tests/test_app.py b/ForgeDiscussion/forgediscussion/tests/test_app.py
index 0bf49ae..434e4d2 100644
--- a/ForgeDiscussion/forgediscussion/tests/test_app.py
+++ b/ForgeDiscussion/forgediscussion/tests/test_app.py
@@ -23,7 +23,6 @@
 from io import BytesIO
 from alluratest.controller import setup_basic_test, setup_unit_test
 
-from alluratest.tools import assert_equal
 from tg import tmpl_context as c
 
 from forgediscussion.site_stats import posts_24hr
diff --git a/ForgeFeedback/forgefeedback/tests/test_feedback_roles.py b/ForgeFeedback/forgefeedback/tests/test_feedback_roles.py
index 64b6262..33faa82 100644
--- a/ForgeFeedback/forgefeedback/tests/test_feedback_roles.py
+++ b/ForgeFeedback/forgefeedback/tests/test_feedback_roles.py
@@ -17,8 +17,6 @@
 
 from tg import tmpl_context as c, app_globals as g
 
-from alluratest.tools import assert_equal
-
 from alluratest.controller import setup_basic_test, setup_global_objects
 from allura import model as M
 from allura.lib import security
@@ -26,7 +24,7 @@
 from allura.lib import helpers as h
 
 
-def setup_module(module):
+def setup_module():
     setup_basic_test()
     setup_with_tools()
 
diff --git a/ForgeFeedback/forgefeedback/tests/unit/test_feedback.py b/ForgeFeedback/forgefeedback/tests/unit/test_feedback.py
index a5863d3..dd885df 100644
--- a/ForgeFeedback/forgefeedback/tests/unit/test_feedback.py
+++ b/ForgeFeedback/forgefeedback/tests/unit/test_feedback.py
@@ -15,10 +15,6 @@
 #       specific language governing permissions and limitations
 #       under the License.
 
-from datetime import datetime
-from alluratest.tools import assert_equal, assert_true
-from tg import tmpl_context as c
-
 from forgefeedback.tests.unit import FeedbackTestWithModel
 from forgefeedback import model as M
 
diff --git a/ForgeFeedback/forgefeedback/tests/unit/test_root_controller.py b/ForgeFeedback/forgefeedback/tests/unit/test_root_controller.py
index f6b2b0c..bd86be4 100644
--- a/ForgeFeedback/forgefeedback/tests/unit/test_root_controller.py
+++ b/ForgeFeedback/forgefeedback/tests/unit/test_root_controller.py
@@ -15,13 +15,8 @@
 #       specific language governing permissions and limitations
 #       under the License.
 
-import unittest
-
-from mock import Mock, patch
 from ming.orm.ormsession import session
 from tg import tmpl_context as c
-from tg import request
-from alluratest.tools import assert_equal
 
 from allura.lib import helpers as h
 from allura.model import User
diff --git a/ForgeFiles/forgefiles/tests/functional/test_root.py b/ForgeFiles/forgefiles/tests/functional/test_root.py
index 5c44760..75acf6f 100644
--- a/ForgeFiles/forgefiles/tests/functional/test_root.py
+++ b/ForgeFiles/forgefiles/tests/functional/test_root.py
@@ -15,7 +15,6 @@
 #       specific language governing permissions and limitations
 #       under the License.
 from tg import tmpl_context as c
-from nose.tools import assert_true,assert_not_equal,assert_equals
 
 from allura import model as M
 from alluratest.controller import TestController
diff --git a/ForgeFiles/forgefiles/tests/model/test_files.py b/ForgeFiles/forgefiles/tests/model/test_files.py
index 38929e6..d664158 100644
--- a/ForgeFiles/forgefiles/tests/model/test_files.py
+++ b/ForgeFiles/forgefiles/tests/model/test_files.py
@@ -17,8 +17,6 @@
 
 '''This module is added for testing the files model '''
 
-from nose.tools import assert_equal, assert_true, assert_false
-
 from forgefiles.tests.model import FilesTestWithModel
 from forgefiles.model.files import UploadFolder
 from forgefiles.model.files import UploadFiles
diff --git a/ForgeFiles/forgefiles/tests/test_files_roles.py b/ForgeFiles/forgefiles/tests/test_files_roles.py
index 6df1ae7..1bce3c1 100644
--- a/ForgeFiles/forgefiles/tests/test_files_roles.py
+++ b/ForgeFiles/forgefiles/tests/test_files_roles.py
@@ -15,7 +15,6 @@
 #       specific language governing permissions and limitations
 #       under the License.
 
-from nose.tools import assert_equal
 from tg import tmpl_context as c, app_globals as g
 
 from alluratest.controller import setup_basic_test, setup_global_objects
diff --git a/ForgeGit/forgegit/tests/functional/test_auth.py b/ForgeGit/forgegit/tests/functional/test_auth.py
index d0bacfa..80955e0 100644
--- a/ForgeGit/forgegit/tests/functional/test_auth.py
+++ b/ForgeGit/forgegit/tests/functional/test_auth.py
@@ -16,7 +16,6 @@
 #       under the License.
 
 import json
-from datadiff.tools import assert_equal
 
 from allura.tests import TestController
 from allura.tests.decorators import with_tool
diff --git a/ForgeGit/forgegit/tests/functional/test_controllers.py b/ForgeGit/forgegit/tests/functional/test_controllers.py
index c681d5b..a906bea 100644
--- a/ForgeGit/forgegit/tests/functional/test_controllers.py
+++ b/ForgeGit/forgegit/tests/functional/test_controllers.py
@@ -22,8 +22,6 @@
 import tempfile
 import textwrap
 
-from datadiff.tools import assert_equal as dd_assert_equal
-from alluratest.tools import assert_equal, assert_in, assert_not_in, assert_not_equal
 import pkg_resources
 from alluratest.tools import assert_regexp_matches
 from tg import tmpl_context as c
@@ -892,7 +890,7 @@
         assert '<p>changed description</p' in r
         assert 'Merge Request #1: changed summary (open)' in r
         changes = r.html.findAll('div', attrs={'class': 'markdown_content'})[-1]
-        dd_assert_equal(str(changes), """
+        assert str(changes) == """
 <div class="markdown_content"><ul>
 <li>
 <p><strong>Summary</strong>: summary --&gt; changed summary</p>
@@ -912,7 +910,7 @@
 <span class="gi">+changed description</span><span class="w"></span>
 </code></pre></div>
 </div>
-""".strip())
+""".strip()
 
         r = self.app.get('/p/test/src-git/merge-requests').follow()
         assert '<a href="1/" rel="nofollow">changed summary</a>' in r
diff --git a/ForgeGit/forgegit/tests/model/test_repository.py b/ForgeGit/forgegit/tests/model/test_repository.py
index 7d29d74..8011ef1 100644
--- a/ForgeGit/forgegit/tests/model/test_repository.py
+++ b/ForgeGit/forgegit/tests/model/test_repository.py
@@ -29,9 +29,7 @@
 import tg
 from ming.base import Object
 from ming.orm import ThreadLocalORMSession, session
-from alluratest.tools import assert_equal, assert_in, assert_less
 from testfixtures import TempDirectory
-from datadiff.tools import assert_equals
 
 from alluratest.controller import setup_basic_test, setup_global_objects
 from allura.lib import helpers as h
diff --git a/ForgeGit/forgegit/tests/test_git_app.py b/ForgeGit/forgegit/tests/test_git_app.py
index c486844..59c8601 100644
--- a/ForgeGit/forgegit/tests/test_git_app.py
+++ b/ForgeGit/forgegit/tests/test_git_app.py
@@ -16,7 +16,6 @@
 #       under the License.
 
 import unittest
-from alluratest.tools import assert_equals
 
 from tg import tmpl_context as c
 from ming.orm import ThreadLocalORMSession
diff --git a/ForgeImporters/forgeimporters/github/tests/test_utils.py b/ForgeImporters/forgeimporters/github/tests/test_utils.py
index 5f067e8..f8c45cd 100644
--- a/ForgeImporters/forgeimporters/github/tests/test_utils.py
+++ b/ForgeImporters/forgeimporters/github/tests/test_utils.py
@@ -15,8 +15,6 @@
 #       specific language governing permissions and limitations
 #       under the License.
 
-from alluratest.tools import assert_equal
-
 from forgeimporters.github.utils import GitHubMarkdownConverter
 
 
diff --git a/ForgeImporters/forgeimporters/github/tests/test_wiki.py b/ForgeImporters/forgeimporters/github/tests/test_wiki.py
index 20f0100..1ddd56d 100644
--- a/ForgeImporters/forgeimporters/github/tests/test_wiki.py
+++ b/ForgeImporters/forgeimporters/github/tests/test_wiki.py
@@ -16,7 +16,6 @@
 #       under the License.
 
 from unittest import TestCase, skipIf
-from alluratest.tools import assert_equal
 from mock import Mock, patch, call
 from ming.odm import ThreadLocalORMSession
 import git
diff --git a/ForgeImporters/forgeimporters/tests/github/functional/test_github.py b/ForgeImporters/forgeimporters/tests/github/functional/test_github.py
index 7945bb2..90f6055 100644
--- a/ForgeImporters/forgeimporters/tests/github/functional/test_github.py
+++ b/ForgeImporters/forgeimporters/tests/github/functional/test_github.py
@@ -17,7 +17,6 @@
 import requests
 import tg
 from mock import patch, call, Mock
-from alluratest.tools import assert_equal
 from unittest import TestCase
 
 from allura.tests import TestController
diff --git a/ForgeImporters/forgeimporters/trac/tests/functional/test_trac.py b/ForgeImporters/forgeimporters/trac/tests/functional/test_trac.py
index f31d5a9..c12823f 100644
--- a/ForgeImporters/forgeimporters/trac/tests/functional/test_trac.py
+++ b/ForgeImporters/forgeimporters/trac/tests/functional/test_trac.py
@@ -15,8 +15,7 @@
 #       specific language governing permissions and limitations
 #       under the License.
 
-from mock import patch, Mock
-from alluratest.tools import assert_equal
+from mock import patch
 from tg import config
 
 from allura.lib import helpers as h
diff --git a/ForgeLink/forgelink/tests/functional/test_rest.py b/ForgeLink/forgelink/tests/functional/test_rest.py
index 6b3e026..2be4872 100644
--- a/ForgeLink/forgelink/tests/functional/test_rest.py
+++ b/ForgeLink/forgelink/tests/functional/test_rest.py
@@ -15,7 +15,6 @@
 #       specific language governing permissions and limitations
 #       under the License.
 
-from alluratest.tools import assert_equal
 from allura.tests import decorators as td
 from alluratest.controller import TestRestApiBase
 from allura import model as M
diff --git a/ForgeLink/forgelink/tests/functional/test_root.py b/ForgeLink/forgelink/tests/functional/test_root.py
index 595c2aa..ac2d716 100644
--- a/ForgeLink/forgelink/tests/functional/test_root.py
+++ b/ForgeLink/forgelink/tests/functional/test_root.py
@@ -17,8 +17,6 @@
 
 import json
 
-from alluratest.tools import assert_equal, assert_in
-
 from allura import model as M
 from allura.lib import helpers as h
 from allura.tests import decorators as td
diff --git a/ForgeLink/forgelink/tests/test_app.py b/ForgeLink/forgelink/tests/test_app.py
index d6e2fb4..a94901b 100644
--- a/ForgeLink/forgelink/tests/test_app.py
+++ b/ForgeLink/forgelink/tests/test_app.py
@@ -18,7 +18,6 @@
 import tempfile
 import json
 
-from alluratest.tools import assert_equal
 from tg import tmpl_context as c
 
 from allura.tests import decorators as td
diff --git a/ForgeSVN/forgesvn/tests/functional/test_auth.py b/ForgeSVN/forgesvn/tests/functional/test_auth.py
index 6ae98a7..7a64dc2 100644
--- a/ForgeSVN/forgesvn/tests/functional/test_auth.py
+++ b/ForgeSVN/forgesvn/tests/functional/test_auth.py
@@ -16,7 +16,6 @@
 #       under the License.
 
 import json
-from datadiff.tools import assert_equal
 
 from allura.tests import TestController
 from forgesvn.tests import with_svn
diff --git a/ForgeSVN/forgesvn/tests/functional/test_controllers.py b/ForgeSVN/forgesvn/tests/functional/test_controllers.py
index 27b58e0..99cc242 100644
--- a/ForgeSVN/forgesvn/tests/functional/test_controllers.py
+++ b/ForgeSVN/forgesvn/tests/functional/test_controllers.py
@@ -16,18 +16,15 @@
 #       under the License.
 
 import json
-import re
 import shutil
 import os
 from unittest import skipUnless
 
-import six
 import tg
 import pkg_resources
 from tg import tmpl_context as c
 from ming.orm import ThreadLocalORMSession
 from mock import patch
-from alluratest.tools import assert_equal, assert_in
 
 from allura import model as M
 from allura.lib import helpers as h
diff --git a/ForgeSVN/forgesvn/tests/model/test_repository.py b/ForgeSVN/forgesvn/tests/model/test_repository.py
index 885aaaf..707d7b5 100644
--- a/ForgeSVN/forgesvn/tests/model/test_repository.py
+++ b/ForgeSVN/forgesvn/tests/model/test_repository.py
@@ -29,8 +29,6 @@
 
 from tg import tmpl_context as c, app_globals as g
 import mock
-from alluratest.tools import assert_equal, assert_in
-from datadiff.tools import assert_equals
 import tg
 import ming
 from ming.base import Object
@@ -48,7 +46,6 @@
 from forgesvn.model.svn import svn_path_exists
 from forgesvn.tests import with_svn
 from allura.tests.decorators import with_tool
-import six
 
 
 class TestNewRepo(unittest.TestCase):
diff --git a/ForgeSVN/forgesvn/tests/model/test_svnimplementation.py b/ForgeSVN/forgesvn/tests/model/test_svnimplementation.py
index 0313e82..bb60f13 100644
--- a/ForgeSVN/forgesvn/tests/model/test_svnimplementation.py
+++ b/ForgeSVN/forgesvn/tests/model/test_svnimplementation.py
@@ -16,7 +16,6 @@
 #       under the License.
 
 from mock import Mock, patch
-from alluratest.tools import assert_equal
 from tg import app_globals as g
 
 from alluratest.controller import setup_unit_test
diff --git a/ForgeSVN/forgesvn/tests/test_svn_app.py b/ForgeSVN/forgesvn/tests/test_svn_app.py
index d5c8770..80d3357 100644
--- a/ForgeSVN/forgesvn/tests/test_svn_app.py
+++ b/ForgeSVN/forgesvn/tests/test_svn_app.py
@@ -16,7 +16,6 @@
 #       under the License.
 
 import unittest
-from alluratest.tools import assert_equals
 
 from tg import tmpl_context as c
 from ming.orm import ThreadLocalORMSession
diff --git a/ForgeSVN/forgesvn/tests/test_tasks.py b/ForgeSVN/forgesvn/tests/test_tasks.py
index b3e388e..b4d939e 100644
--- a/ForgeSVN/forgesvn/tests/test_tasks.py
+++ b/ForgeSVN/forgesvn/tests/test_tasks.py
@@ -23,7 +23,6 @@
 import mock
 from tg import tmpl_context as c
 from paste.deploy.converters import asbool
-from alluratest.tools import assert_equal
 
 from alluratest.controller import setup_basic_test
 
diff --git a/ForgeShortUrl/forgeshorturl/tests/functional/test_main.py b/ForgeShortUrl/forgeshorturl/tests/functional/test_main.py
index 1d3471d..4aa1938 100644
--- a/ForgeShortUrl/forgeshorturl/tests/functional/test_main.py
+++ b/ForgeShortUrl/forgeshorturl/tests/functional/test_main.py
@@ -17,7 +17,6 @@
 
 from tg import tmpl_context as c
 from tg import config
-from alluratest.tools import assert_equal
 import mock
 
 from allura.lib import helpers as h
diff --git a/ForgeTracker/forgetracker/tests/command/test_fix_discussion.py b/ForgeTracker/forgetracker/tests/command/test_fix_discussion.py
index 1f3479d..5d51ad1 100644
--- a/ForgeTracker/forgetracker/tests/command/test_fix_discussion.py
+++ b/ForgeTracker/forgetracker/tests/command/test_fix_discussion.py
@@ -16,7 +16,6 @@
 #       under the License.
 
 from ming.orm import session
-from alluratest.tools import assert_equal, assert_not_equal
 import pkg_resources
 
 from alluratest.controller import setup_basic_test, setup_global_objects
diff --git a/ForgeTracker/forgetracker/tests/functional/test_rest.py b/ForgeTracker/forgetracker/tests/functional/test_rest.py
index 7db63df..6dfa4c9 100644
--- a/ForgeTracker/forgetracker/tests/functional/test_rest.py
+++ b/ForgeTracker/forgetracker/tests/functional/test_rest.py
@@ -17,8 +17,6 @@
 
 from tg import tmpl_context as c
 
-from datadiff.tools import assert_equal
-from alluratest.tools import assert_not_equal
 from mock import patch
 from tg import config
 
diff --git a/ForgeTracker/forgetracker/tests/test_app.py b/ForgeTracker/forgetracker/tests/test_app.py
index a688e8d..f5542b6 100644
--- a/ForgeTracker/forgetracker/tests/test_app.py
+++ b/ForgeTracker/forgetracker/tests/test_app.py
@@ -21,7 +21,6 @@
 import os
 from io import BytesIO
 
-from alluratest.tools import assert_equal, assert_true
 from tg import tmpl_context as c
 from cgi import FieldStorage
 
@@ -33,7 +32,6 @@
 from forgetracker import model as TM
 from forgetracker.site_stats import tickets_stats_24hr
 from forgetracker.tests.functional.test_root import TrackerTestController
-from alluratest.pytest_helpers import with_nose_compatibility
 
 
 class TestApp:
diff --git a/ForgeTracker/forgetracker/tests/unit/test_globals_model.py b/ForgeTracker/forgetracker/tests/unit/test_globals_model.py
index bb22df4..2e7c591 100644
--- a/ForgeTracker/forgetracker/tests/unit/test_globals_model.py
+++ b/ForgeTracker/forgetracker/tests/unit/test_globals_model.py
@@ -18,7 +18,6 @@
 from datetime import datetime, timedelta
 
 import mock
-from alluratest.tools import assert_equal
 from tg import tmpl_context as c
 from ming.orm.ormsession import ThreadLocalORMSession
 
diff --git a/ForgeTracker/forgetracker/tests/unit/test_milestone_controller.py b/ForgeTracker/forgetracker/tests/unit/test_milestone_controller.py
index 3bc0edd..9634eb6 100644
--- a/ForgeTracker/forgetracker/tests/unit/test_milestone_controller.py
+++ b/ForgeTracker/forgetracker/tests/unit/test_milestone_controller.py
@@ -17,7 +17,6 @@
 
 
 from mock import Mock
-from alluratest.tools import assert_equal
 
 from allura.lib import helpers as h
 from tg import tmpl_context as c
diff --git a/ForgeTracker/forgetracker/tests/unit/test_root_controller.py b/ForgeTracker/forgetracker/tests/unit/test_root_controller.py
index fd40593..ac01573 100644
--- a/ForgeTracker/forgetracker/tests/unit/test_root_controller.py
+++ b/ForgeTracker/forgetracker/tests/unit/test_root_controller.py
@@ -20,7 +20,6 @@
 from mock import Mock, patch
 from ming.orm.ormsession import session
 from tg import tmpl_context as c
-from alluratest.tools import assert_equal
 
 from allura.lib import helpers as h
 from allura.model import User
diff --git a/ForgeTracker/forgetracker/tests/unit/test_search.py b/ForgeTracker/forgetracker/tests/unit/test_search.py
index c9bb4bd..4c3548b 100644
--- a/ForgeTracker/forgetracker/tests/unit/test_search.py
+++ b/ForgeTracker/forgetracker/tests/unit/test_search.py
@@ -16,7 +16,6 @@
 #       under the License.
 
 import mock
-from alluratest.tools import assert_equal
 from forgetracker.search import get_facets, query_filter_choices
 
 
diff --git a/ForgeWiki/forgewiki/tests/functional/test_rest.py b/ForgeWiki/forgewiki/tests/functional/test_rest.py
index 4eb87d9..0703f7e 100644
--- a/ForgeWiki/forgewiki/tests/functional/test_rest.py
+++ b/ForgeWiki/forgewiki/tests/functional/test_rest.py
@@ -17,7 +17,6 @@
 
 import json
 
-from alluratest.tools import assert_equal, assert_in, assert_not_equal
 import tg
 
 from allura.lib import helpers as h
diff --git a/ForgeWiki/forgewiki/tests/functional/test_root.py b/ForgeWiki/forgewiki/tests/functional/test_root.py
index 927f17d..8a5e5ee 100644
--- a/ForgeWiki/forgewiki/tests/functional/test_root.py
+++ b/ForgeWiki/forgewiki/tests/functional/test_root.py
@@ -21,7 +21,6 @@
 import json
 
 import PIL
-from alluratest.tools import assert_true, assert_equal, assert_in, assert_not_equal, assert_not_in
 from ming.orm.ormsession import ThreadLocalORMSession
 from mock import patch
 from tg import config
diff --git a/ForgeWiki/forgewiki/tests/test_app.py b/ForgeWiki/forgewiki/tests/test_app.py
index 482288d..ca01c82 100644
--- a/ForgeWiki/forgewiki/tests/test_app.py
+++ b/ForgeWiki/forgewiki/tests/test_app.py
@@ -22,7 +22,6 @@
 import os
 from io import BytesIO
 
-from alluratest.tools import assert_equal
 from tg import tmpl_context as c
 from ming.orm import ThreadLocalORMSession
 
diff --git a/ForgeWiki/forgewiki/tests/test_wiki_roles.py b/ForgeWiki/forgewiki/tests/test_wiki_roles.py
index f42f766..56a964d 100644
--- a/ForgeWiki/forgewiki/tests/test_wiki_roles.py
+++ b/ForgeWiki/forgewiki/tests/test_wiki_roles.py
@@ -17,8 +17,6 @@
 
 from tg import tmpl_context as c, app_globals as g
 
-from alluratest.tools import assert_equal
-
 from alluratest.controller import setup_basic_test, setup_global_objects
 from allura import model as M
 from allura.lib import security
diff --git a/requirements.in b/requirements.in
index 57c4c53..0226b62 100644
--- a/requirements.in
+++ b/requirements.in
@@ -49,7 +49,6 @@
 wrapt
 importlib-metadata<5.0
 # testing
-datadiff
 mock
 pyflakes
 #pylint -- disabled due to [#8346]  (also requires diff versions on py2 vs 3, including transitive deps which gets tricky with pip-compile)