← Back to team overview

curtin-dev team mailing list archive

[Merge] ~dbungert/curtin:noble-unittest-fixes-21.x into curtin:release/23.1

 

Dan Bungert has proposed merging ~dbungert/curtin:noble-unittest-fixes-21.x into curtin:release/23.1.

Commit message:
do not squash

Requested reviews:
  curtin developers (curtin-dev)

For more details, see:
https://code.launchpad.net/~dbungert/curtin/+git/curtin/+merge/469061

version of https://code.launchpad.net/~dbungert/curtin/+git/curtin/+merge/469060 with additional fixes to get the 21.x branch ready for Noble
-- 
Your team curtin developers is requested to review the proposed merge of ~dbungert/curtin:noble-unittest-fixes-21.x into curtin:release/23.1.
diff --git a/curtin/commands/curthooks.py b/curtin/commands/curthooks.py
index 74a67e8..6fb5f3d 100644
--- a/curtin/commands/curthooks.py
+++ b/curtin/commands/curthooks.py
@@ -269,7 +269,7 @@ def chzdev_import(data=None, persistent=True, noroot=True, base=None,
     if noroot:
         cmd.extend(['--no-root-update'])
     if base:
-        if type(base) == dict:
+        if isinstance(base, dict):
             cmd.extend(
                 ['--base'] + ["%s=%s" % (k, v) for k, v in base.items()])
         else:
diff --git a/curtin/net/__init__.py b/curtin/net/__init__.py
index 3b02f9d..d833bc5 100644
--- a/curtin/net/__init__.py
+++ b/curtin/net/__init__.py
@@ -307,7 +307,7 @@ def iface_add_subnet(iface, subnet):
     ]
     for key, value in subnet.items():
         if value and key in valid_map:
-            if type(value) == list:
+            if isinstance(value, list):
                 value = " ".join(value)
             if '_' in key:
                 key = key.replace('_', '-')
@@ -345,7 +345,7 @@ def iface_add_attrs(iface, index):
     ]
 
     def add_entry(key, value):
-        if type(value) == list:
+        if isinstance(value, list):
             value = " ".join([str(v) for v in value])
         return "    {} {}\n".format(key, value)
 
diff --git a/curtin/net/network_state.py b/curtin/net/network_state.py
index d8a9e7d..e71b37f 100644
--- a/curtin/net/network_state.py
+++ b/curtin/net/network_state.py
@@ -304,7 +304,7 @@ class NetworkState:
         dns = self.network_state.get('dns')
         if 'address' in command:
             addrs = command['address']
-            if not type(addrs) == list:
+            if not isinstance(addrs, list):
                 addrs = [addrs]
             for addr in addrs:
                 dns['nameservers'].append(addr)
diff --git a/curtin/util.py b/curtin/util.py
index 75d7545..fd95ec8 100644
--- a/curtin/util.py
+++ b/curtin/util.py
@@ -402,7 +402,7 @@ class ProcessExecutionError(IOError):
         IOError.__init__(self, message)
 
     def _indent_text(self, text):
-        if type(text) == bytes:
+        if isinstance(text, bytes):
             text = text.decode()
         return text.replace('\n', '\n' + ' ' * self.stdout_indent_level)
 
diff --git a/test-requirements.txt b/test-requirements.txt
index 0d93c02..f36ae5b 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -1,9 +1,10 @@
-pip
-wheel
-virtualenv
+coverage
+flake8
 jsonschema
 mock
 nose
-pyflakes
-coverage
 parameterized
+pip
+pyflakes
+virtualenv
+wheel
diff --git a/tests/unittests/test_block_iscsi.py b/tests/unittests/test_block_iscsi.py
index f8ef5d8..7d83b2d 100644
--- a/tests/unittests/test_block_iscsi.py
+++ b/tests/unittests/test_block_iscsi.py
@@ -11,62 +11,62 @@ from .helpers import CiTestCase
 class TestBlockIscsiPortalParsing(CiTestCase):
 
     def test_iscsi_portal_parsing_string(self):
-        with self.assertRaisesRegexp(ValueError, 'not a string'):
+        with self.assertRaisesRegex(ValueError, 'not a string'):
             iscsi.assert_valid_iscsi_portal(1234)
 
     def test_iscsi_portal_parsing_no_port(self):
         # port must be specified
-        with self.assertRaisesRegexp(ValueError, 'not in the format'):
+        with self.assertRaisesRegex(ValueError, 'not in the format'):
             iscsi.assert_valid_iscsi_portal('192.168.1.12')
-        with self.assertRaisesRegexp(ValueError, 'not in the format'):
+        with self.assertRaisesRegex(ValueError, 'not in the format'):
             iscsi.assert_valid_iscsi_portal('fe80::a634:d9ff:fe40:768a')
-        with self.assertRaisesRegexp(ValueError, 'not in the format'):
+        with self.assertRaisesRegex(ValueError, 'not in the format'):
             iscsi.assert_valid_iscsi_portal('192.168.1.12:')
-        with self.assertRaisesRegexp(ValueError, 'not in the format'):
+        with self.assertRaisesRegex(ValueError, 'not in the format'):
             iscsi.assert_valid_iscsi_portal('test.example.com:')
 
     def test_iscsi_portal_parsing_valid_ip(self):
         # IP must be in [] for IPv6, if not we misparse
         host, port = iscsi.assert_valid_iscsi_portal(
             'fe80::a634:d9ff:fe40:768a:9999')
-        self.assertEquals(host, 'fe80::a634:d9ff:fe40:768a')
-        self.assertEquals(port, 9999)
+        self.assertEqual(host, 'fe80::a634:d9ff:fe40:768a')
+        self.assertEqual(port, 9999)
         # IP must not be in [] if port is specified for IPv4
-        with self.assertRaisesRegexp(ValueError, 'Invalid IPv6 address'):
+        with self.assertRaisesRegex(ValueError, 'Invalid IPv6 address'):
             iscsi.assert_valid_iscsi_portal('[192.168.1.12]:9000')
-        with self.assertRaisesRegexp(ValueError, 'Invalid IPv6 address'):
+        with self.assertRaisesRegex(ValueError, 'Invalid IPv6 address'):
             iscsi.assert_valid_iscsi_portal('[test.example.com]:8000')
 
     def test_iscsi_portal_parsing_ip(self):
-        with self.assertRaisesRegexp(ValueError, 'Invalid IPv6 address'):
+        with self.assertRaisesRegex(ValueError, 'Invalid IPv6 address'):
             iscsi.assert_valid_iscsi_portal(
                 '[1200::AB00:1234::2552:7777:1313]:9999')
         # cannot distinguish between bad IP and bad hostname
         host, port = iscsi.assert_valid_iscsi_portal('192.168:9000')
-        self.assertEquals(host, '192.168')
-        self.assertEquals(port, 9000)
+        self.assertEqual(host, '192.168')
+        self.assertEqual(port, 9000)
 
     def test_iscsi_portal_parsing_port(self):
-        with self.assertRaisesRegexp(ValueError, 'not in the format'):
+        with self.assertRaisesRegex(ValueError, 'not in the format'):
             iscsi.assert_valid_iscsi_portal('192.168.1.12:ABCD')
-        with self.assertRaisesRegexp(ValueError, 'not in the format'):
+        with self.assertRaisesRegex(ValueError, 'not in the format'):
             iscsi.assert_valid_iscsi_portal('[fe80::a634:d9ff:fe40:768a]:ABCD')
-        with self.assertRaisesRegexp(ValueError, 'not in the format'):
+        with self.assertRaisesRegex(ValueError, 'not in the format'):
             iscsi.assert_valid_iscsi_portal('test.example.com:ABCD')
 
     def test_iscsi_portal_parsing_good_portals(self):
         host, port = iscsi.assert_valid_iscsi_portal('192.168.1.12:9000')
-        self.assertEquals(host, '192.168.1.12')
-        self.assertEquals(port, 9000)
+        self.assertEqual(host, '192.168.1.12')
+        self.assertEqual(port, 9000)
 
         host, port = iscsi.assert_valid_iscsi_portal(
             '[fe80::a634:d9ff:fe40:768a]:9999')
-        self.assertEquals(host, 'fe80::a634:d9ff:fe40:768a')
-        self.assertEquals(port, 9999)
+        self.assertEqual(host, 'fe80::a634:d9ff:fe40:768a')
+        self.assertEqual(port, 9999)
 
         host, port = iscsi.assert_valid_iscsi_portal('test.example.com:8000')
-        self.assertEquals(host, 'test.example.com')
-        self.assertEquals(port, 8000)
+        self.assertEqual(host, 'test.example.com')
+        self.assertEqual(port, 8000)
 
     # disk specification:
     # TARGETSPEC=host:proto:port:lun:targetname
@@ -74,73 +74,73 @@ class TestBlockIscsiPortalParsing(CiTestCase):
     # root=iscsi:user:password@$TARGETSPEC
     # root=iscsi:user:password:initiatoruser:initiatorpassword@$TARGETSPEC
     def test_iscsi_disk_basic(self):
-        with self.assertRaisesRegexp(ValueError, 'must be specified'):
+        with self.assertRaisesRegex(ValueError, 'must be specified'):
             iscsi.IscsiDisk('')
 
         # typo
-        with self.assertRaisesRegexp(ValueError, 'must be specified'):
+        with self.assertRaisesRegex(ValueError, 'must be specified'):
             iscsi.IscsiDisk('iscs:')
 
         # no specification
-        with self.assertRaisesRegexp(ValueError, 'must be specified'):
+        with self.assertRaisesRegex(ValueError, 'must be specified'):
             iscsi.IscsiDisk('iscsi:')
-        with self.assertRaisesRegexp(ValueError, 'Both host and targetname'):
+        with self.assertRaisesRegex(ValueError, 'Both host and targetname'):
             iscsi.IscsiDisk('iscsi:::::')
 
     def test_iscsi_disk_ip_valid(self):
         # these are all misparses we cannot catch trivially
         i = iscsi.IscsiDisk('iscsi:192.168::::target')
-        self.assertEquals(i.user, None)
-        self.assertEquals(i.password, None)
-        self.assertEquals(i.iuser, None)
-        self.assertEquals(i.ipassword, None)
-        self.assertEquals(i.host, '192.168')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 0)
-        self.assertEquals(i.target, 'target')
+        self.assertEqual(i.user, None)
+        self.assertEqual(i.password, None)
+        self.assertEqual(i.iuser, None)
+        self.assertEqual(i.ipassword, None)
+        self.assertEqual(i.host, '192.168')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 0)
+        self.assertEqual(i.target, 'target')
 
         i = iscsi.IscsiDisk('iscsi:[fe80::]::::target')
-        self.assertEquals(i.user, None)
-        self.assertEquals(i.password, None)
-        self.assertEquals(i.iuser, None)
-        self.assertEquals(i.ipassword, None)
-        self.assertEquals(i.host, 'fe80::')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 0)
-        self.assertEquals(i.target, 'target')
+        self.assertEqual(i.user, None)
+        self.assertEqual(i.password, None)
+        self.assertEqual(i.iuser, None)
+        self.assertEqual(i.ipassword, None)
+        self.assertEqual(i.host, 'fe80::')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 0)
+        self.assertEqual(i.target, 'target')
 
         i = iscsi.IscsiDisk('iscsi:test.example::::target')
-        self.assertEquals(i.user, None)
-        self.assertEquals(i.password, None)
-        self.assertEquals(i.iuser, None)
-        self.assertEquals(i.ipassword, None)
-        self.assertEquals(i.host, 'test.example')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 0)
-        self.assertEquals(i.target, 'target')
+        self.assertEqual(i.user, None)
+        self.assertEqual(i.password, None)
+        self.assertEqual(i.iuser, None)
+        self.assertEqual(i.ipassword, None)
+        self.assertEqual(i.host, 'test.example')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 0)
+        self.assertEqual(i.target, 'target')
 
     def test_iscsi_disk_port(self):
-        with self.assertRaisesRegexp(ValueError, 'Specified iSCSI port'):
+        with self.assertRaisesRegex(ValueError, 'Specified iSCSI port'):
             iscsi.IscsiDisk('iscsi:192.168.1.12::ABCD::target')
-        with self.assertRaisesRegexp(ValueError, 'Specified iSCSI port'):
+        with self.assertRaisesRegex(ValueError, 'Specified iSCSI port'):
             iscsi.IscsiDisk('iscsi:[fe80::a634:d9ff:fe40:768a:6]::ABCD::'
                             'target')
-        with self.assertRaisesRegexp(ValueError, 'Specified iSCSI port'):
+        with self.assertRaisesRegex(ValueError, 'Specified iSCSI port'):
             iscsi.IscsiDisk('iscsi:test.example.com::ABCD::target')
 
     def test_iscsi_disk_target(self):
-        with self.assertRaisesRegexp(ValueError, 'Both host and targetname'):
+        with self.assertRaisesRegex(ValueError, 'Both host and targetname'):
             iscsi.IscsiDisk('iscsi:192.168.1.12::::')
-        with self.assertRaisesRegexp(ValueError, 'Both host and targetname'):
+        with self.assertRaisesRegex(ValueError, 'Both host and targetname'):
             iscsi.IscsiDisk('iscsi:[fe80::a634:d9ff:fe40:768a:6]::::')
-        with self.assertRaisesRegexp(ValueError, 'Both host and targetname'):
+        with self.assertRaisesRegex(ValueError, 'Both host and targetname'):
             iscsi.IscsiDisk('iscsi:test.example.com::::')
 
     def test_iscsi_disk_ip(self):
-        with self.assertRaisesRegexp(ValueError, 'Both host and targetname'):
+        with self.assertRaisesRegex(ValueError, 'Both host and targetname'):
             iscsi.IscsiDisk('iscsi:::::target')
 
     def test_iscsi_disk_auth(self):
@@ -165,321 +165,321 @@ class TestBlockIscsiPortalParsing(CiTestCase):
 
     def test_iscsi_disk_good_ipv4(self):
         i = iscsi.IscsiDisk('iscsi:192.168.1.12:6:3260:1:target')
-        self.assertEquals(i.user, None)
-        self.assertEquals(i.password, None)
-        self.assertEquals(i.iuser, None)
-        self.assertEquals(i.ipassword, None)
-        self.assertEquals(i.host, '192.168.1.12')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 1)
-        self.assertEquals(i.target, 'target')
+        self.assertEqual(i.user, None)
+        self.assertEqual(i.password, None)
+        self.assertEqual(i.iuser, None)
+        self.assertEqual(i.ipassword, None)
+        self.assertEqual(i.host, '192.168.1.12')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 1)
+        self.assertEqual(i.target, 'target')
 
         i = iscsi.IscsiDisk('iscsi:192.168.1.12::3260:1:target')
-        self.assertEquals(i.user, None)
-        self.assertEquals(i.password, None)
-        self.assertEquals(i.iuser, None)
-        self.assertEquals(i.ipassword, None)
-        self.assertEquals(i.host, '192.168.1.12')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 1)
-        self.assertEquals(i.target, 'target')
+        self.assertEqual(i.user, None)
+        self.assertEqual(i.password, None)
+        self.assertEqual(i.iuser, None)
+        self.assertEqual(i.ipassword, None)
+        self.assertEqual(i.host, '192.168.1.12')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 1)
+        self.assertEqual(i.target, 'target')
 
         i = iscsi.IscsiDisk('iscsi:192.168.1.12:::1:target')
-        self.assertEquals(i.user, None)
-        self.assertEquals(i.password, None)
-        self.assertEquals(i.iuser, None)
-        self.assertEquals(i.ipassword, None)
-        self.assertEquals(i.host, '192.168.1.12')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 1)
-        self.assertEquals(i.target, 'target')
+        self.assertEqual(i.user, None)
+        self.assertEqual(i.password, None)
+        self.assertEqual(i.iuser, None)
+        self.assertEqual(i.ipassword, None)
+        self.assertEqual(i.host, '192.168.1.12')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 1)
+        self.assertEqual(i.target, 'target')
 
         i = iscsi.IscsiDisk('iscsi:user:password@192.168.1.12:::1:target')
-        self.assertEquals(i.user, 'user')
-        self.assertEquals(i.password, 'password')
-        self.assertEquals(i.iuser, None)
-        self.assertEquals(i.ipassword, None)
-        self.assertEquals(i.host, '192.168.1.12')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 1)
-        self.assertEquals(i.target, 'target')
+        self.assertEqual(i.user, 'user')
+        self.assertEqual(i.password, 'password')
+        self.assertEqual(i.iuser, None)
+        self.assertEqual(i.ipassword, None)
+        self.assertEqual(i.host, '192.168.1.12')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 1)
+        self.assertEqual(i.target, 'target')
 
         i = iscsi.IscsiDisk('iscsi:user:@192.168.1.12:::1:target')
-        self.assertEquals(i.user, 'user')
-        self.assertEquals(i.password, '')
-        self.assertEquals(i.iuser, None)
-        self.assertEquals(i.ipassword, None)
-        self.assertEquals(i.host, '192.168.1.12')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 1)
-        self.assertEquals(i.target, 'target')
+        self.assertEqual(i.user, 'user')
+        self.assertEqual(i.password, '')
+        self.assertEqual(i.iuser, None)
+        self.assertEqual(i.ipassword, None)
+        self.assertEqual(i.host, '192.168.1.12')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 1)
+        self.assertEqual(i.target, 'target')
 
         i = iscsi.IscsiDisk('iscsi:user:password:iuser:ipassword@'
                             '192.168.1.12:::1:target')
-        self.assertEquals(i.user, 'user')
-        self.assertEquals(i.password, 'password')
-        self.assertEquals(i.iuser, 'iuser')
-        self.assertEquals(i.ipassword, 'ipassword')
-        self.assertEquals(i.host, '192.168.1.12')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 1)
-        self.assertEquals(i.target, 'target')
+        self.assertEqual(i.user, 'user')
+        self.assertEqual(i.password, 'password')
+        self.assertEqual(i.iuser, 'iuser')
+        self.assertEqual(i.ipassword, 'ipassword')
+        self.assertEqual(i.host, '192.168.1.12')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 1)
+        self.assertEqual(i.target, 'target')
 
         i = iscsi.IscsiDisk('iscsi:user:password:iuser:@'
                             '192.168.1.12:::1:target')
-        self.assertEquals(i.user, 'user')
-        self.assertEquals(i.password, 'password')
-        self.assertEquals(i.iuser, 'iuser')
-        self.assertEquals(i.ipassword, '')
-        self.assertEquals(i.host, '192.168.1.12')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 1)
-        self.assertEquals(i.target, 'target')
+        self.assertEqual(i.user, 'user')
+        self.assertEqual(i.password, 'password')
+        self.assertEqual(i.iuser, 'iuser')
+        self.assertEqual(i.ipassword, '')
+        self.assertEqual(i.host, '192.168.1.12')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 1)
+        self.assertEqual(i.target, 'target')
 
         i = iscsi.IscsiDisk('iscsi:user::iuser:@192.168.1.12:::1:target')
-        self.assertEquals(i.user, 'user')
-        self.assertEquals(i.password, '')
-        self.assertEquals(i.iuser, 'iuser')
-        self.assertEquals(i.ipassword, '')
-        self.assertEquals(i.host, '192.168.1.12')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 1)
-        self.assertEquals(i.target, 'target')
+        self.assertEqual(i.user, 'user')
+        self.assertEqual(i.password, '')
+        self.assertEqual(i.iuser, 'iuser')
+        self.assertEqual(i.ipassword, '')
+        self.assertEqual(i.host, '192.168.1.12')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 1)
+        self.assertEqual(i.target, 'target')
 
     def test_iscsi_disk_good_ipv6(self):
         i = iscsi.IscsiDisk(
             'iscsi:[fe80::a634:d9ff:fe40:768a:6]:5:3260:1:target')
-        self.assertEquals(i.user, None)
-        self.assertEquals(i.password, None)
-        self.assertEquals(i.iuser, None)
-        self.assertEquals(i.ipassword, None)
-        self.assertEquals(i.host, 'fe80::a634:d9ff:fe40:768a:6')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 1)
-        self.assertEquals(i.target, 'target')
+        self.assertEqual(i.user, None)
+        self.assertEqual(i.password, None)
+        self.assertEqual(i.iuser, None)
+        self.assertEqual(i.ipassword, None)
+        self.assertEqual(i.host, 'fe80::a634:d9ff:fe40:768a:6')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 1)
+        self.assertEqual(i.target, 'target')
 
         i = iscsi.IscsiDisk(
             'iscsi:[fe80::a634:d9ff:fe40:768a:6]::3260:1:target')
-        self.assertEquals(i.user, None)
-        self.assertEquals(i.password, None)
-        self.assertEquals(i.iuser, None)
-        self.assertEquals(i.ipassword, None)
-        self.assertEquals(i.host, 'fe80::a634:d9ff:fe40:768a:6')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 1)
-        self.assertEquals(i.target, 'target')
+        self.assertEqual(i.user, None)
+        self.assertEqual(i.password, None)
+        self.assertEqual(i.iuser, None)
+        self.assertEqual(i.ipassword, None)
+        self.assertEqual(i.host, 'fe80::a634:d9ff:fe40:768a:6')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 1)
+        self.assertEqual(i.target, 'target')
 
         i = iscsi.IscsiDisk('iscsi:[fe80::a634:d9ff:fe40:768a:6]:::1:target')
-        self.assertEquals(i.user, None)
-        self.assertEquals(i.password, None)
-        self.assertEquals(i.iuser, None)
-        self.assertEquals(i.ipassword, None)
-        self.assertEquals(i.host, 'fe80::a634:d9ff:fe40:768a:6')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 1)
-        self.assertEquals(i.target, 'target')
+        self.assertEqual(i.user, None)
+        self.assertEqual(i.password, None)
+        self.assertEqual(i.iuser, None)
+        self.assertEqual(i.ipassword, None)
+        self.assertEqual(i.host, 'fe80::a634:d9ff:fe40:768a:6')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 1)
+        self.assertEqual(i.target, 'target')
 
         i = iscsi.IscsiDisk('iscsi:user:password@'
                             '[fe80::a634:d9ff:fe40:768a:6]:::1:target')
-        self.assertEquals(i.user, 'user')
-        self.assertEquals(i.password, 'password')
-        self.assertEquals(i.iuser, None)
-        self.assertEquals(i.ipassword, None)
-        self.assertEquals(i.host, 'fe80::a634:d9ff:fe40:768a:6')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 1)
-        self.assertEquals(i.target, 'target')
+        self.assertEqual(i.user, 'user')
+        self.assertEqual(i.password, 'password')
+        self.assertEqual(i.iuser, None)
+        self.assertEqual(i.ipassword, None)
+        self.assertEqual(i.host, 'fe80::a634:d9ff:fe40:768a:6')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 1)
+        self.assertEqual(i.target, 'target')
 
         i = iscsi.IscsiDisk('iscsi:user:@'
                             '[fe80::a634:d9ff:fe40:768a:6]:::1:target')
-        self.assertEquals(i.user, 'user')
-        self.assertEquals(i.password, '')
-        self.assertEquals(i.iuser, None)
-        self.assertEquals(i.ipassword, None)
-        self.assertEquals(i.host, 'fe80::a634:d9ff:fe40:768a:6')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 1)
-        self.assertEquals(i.target, 'target')
+        self.assertEqual(i.user, 'user')
+        self.assertEqual(i.password, '')
+        self.assertEqual(i.iuser, None)
+        self.assertEqual(i.ipassword, None)
+        self.assertEqual(i.host, 'fe80::a634:d9ff:fe40:768a:6')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 1)
+        self.assertEqual(i.target, 'target')
 
         i = iscsi.IscsiDisk('iscsi:user:password:iuser:ipassword@'
                             '[fe80::a634:d9ff:fe40:768a:6]:::1:target')
-        self.assertEquals(i.user, 'user')
-        self.assertEquals(i.password, 'password')
-        self.assertEquals(i.iuser, 'iuser')
-        self.assertEquals(i.ipassword, 'ipassword')
-        self.assertEquals(i.host, 'fe80::a634:d9ff:fe40:768a:6')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 1)
-        self.assertEquals(i.target, 'target')
+        self.assertEqual(i.user, 'user')
+        self.assertEqual(i.password, 'password')
+        self.assertEqual(i.iuser, 'iuser')
+        self.assertEqual(i.ipassword, 'ipassword')
+        self.assertEqual(i.host, 'fe80::a634:d9ff:fe40:768a:6')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 1)
+        self.assertEqual(i.target, 'target')
 
         i = iscsi.IscsiDisk('iscsi:user:password:iuser:@'
                             '[fe80::a634:d9ff:fe40:768a:6]:::1:target')
-        self.assertEquals(i.user, 'user')
-        self.assertEquals(i.password, 'password')
-        self.assertEquals(i.iuser, 'iuser')
-        self.assertEquals(i.ipassword, '')
-        self.assertEquals(i.host, 'fe80::a634:d9ff:fe40:768a:6')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 1)
-        self.assertEquals(i.target, 'target')
+        self.assertEqual(i.user, 'user')
+        self.assertEqual(i.password, 'password')
+        self.assertEqual(i.iuser, 'iuser')
+        self.assertEqual(i.ipassword, '')
+        self.assertEqual(i.host, 'fe80::a634:d9ff:fe40:768a:6')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 1)
+        self.assertEqual(i.target, 'target')
 
         i = iscsi.IscsiDisk('iscsi:user::iuser:@'
                             '[fe80::a634:d9ff:fe40:768a:6]:::1:target')
-        self.assertEquals(i.user, 'user')
-        self.assertEquals(i.password, '')
-        self.assertEquals(i.iuser, 'iuser')
-        self.assertEquals(i.ipassword, '')
-        self.assertEquals(i.host, 'fe80::a634:d9ff:fe40:768a:6')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 1)
-        self.assertEquals(i.target, 'target')
+        self.assertEqual(i.user, 'user')
+        self.assertEqual(i.password, '')
+        self.assertEqual(i.iuser, 'iuser')
+        self.assertEqual(i.ipassword, '')
+        self.assertEqual(i.host, 'fe80::a634:d9ff:fe40:768a:6')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 1)
+        self.assertEqual(i.target, 'target')
 
     def test_iscsi_disk_good_hostname(self):
         i = iscsi.IscsiDisk('iscsi:test.example.com:6:3260:1:target')
-        self.assertEquals(i.user, None)
-        self.assertEquals(i.password, None)
-        self.assertEquals(i.iuser, None)
-        self.assertEquals(i.ipassword, None)
-        self.assertEquals(i.host, 'test.example.com')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 1)
-        self.assertEquals(i.target, 'target')
+        self.assertEqual(i.user, None)
+        self.assertEqual(i.password, None)
+        self.assertEqual(i.iuser, None)
+        self.assertEqual(i.ipassword, None)
+        self.assertEqual(i.host, 'test.example.com')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 1)
+        self.assertEqual(i.target, 'target')
 
         i = iscsi.IscsiDisk('iscsi:test.example.com::3260:1:target')
-        self.assertEquals(i.user, None)
-        self.assertEquals(i.password, None)
-        self.assertEquals(i.iuser, None)
-        self.assertEquals(i.ipassword, None)
-        self.assertEquals(i.host, 'test.example.com')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 1)
-        self.assertEquals(i.target, 'target')
+        self.assertEqual(i.user, None)
+        self.assertEqual(i.password, None)
+        self.assertEqual(i.iuser, None)
+        self.assertEqual(i.ipassword, None)
+        self.assertEqual(i.host, 'test.example.com')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 1)
+        self.assertEqual(i.target, 'target')
 
         i = iscsi.IscsiDisk('iscsi:test.example.com:::1:target')
-        self.assertEquals(i.user, None)
-        self.assertEquals(i.password, None)
-        self.assertEquals(i.iuser, None)
-        self.assertEquals(i.ipassword, None)
-        self.assertEquals(i.host, 'test.example.com')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 1)
-        self.assertEquals(i.target, 'target')
+        self.assertEqual(i.user, None)
+        self.assertEqual(i.password, None)
+        self.assertEqual(i.iuser, None)
+        self.assertEqual(i.ipassword, None)
+        self.assertEqual(i.host, 'test.example.com')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 1)
+        self.assertEqual(i.target, 'target')
 
         i = iscsi.IscsiDisk('iscsi:user:password@xxxxxxxxxxxxxxxx:::1:target')
-        self.assertEquals(i.user, 'user')
-        self.assertEquals(i.password, 'password')
-        self.assertEquals(i.iuser, None)
-        self.assertEquals(i.ipassword, None)
-        self.assertEquals(i.host, 'test.example.com')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 1)
-        self.assertEquals(i.target, 'target')
+        self.assertEqual(i.user, 'user')
+        self.assertEqual(i.password, 'password')
+        self.assertEqual(i.iuser, None)
+        self.assertEqual(i.ipassword, None)
+        self.assertEqual(i.host, 'test.example.com')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 1)
+        self.assertEqual(i.target, 'target')
 
         i = iscsi.IscsiDisk('iscsi:user:@test.example.com:::1:target')
-        self.assertEquals(i.user, 'user')
-        self.assertEquals(i.password, '')
-        self.assertEquals(i.iuser, None)
-        self.assertEquals(i.ipassword, None)
-        self.assertEquals(i.host, 'test.example.com')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 1)
-        self.assertEquals(i.target, 'target')
+        self.assertEqual(i.user, 'user')
+        self.assertEqual(i.password, '')
+        self.assertEqual(i.iuser, None)
+        self.assertEqual(i.ipassword, None)
+        self.assertEqual(i.host, 'test.example.com')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 1)
+        self.assertEqual(i.target, 'target')
 
         i = iscsi.IscsiDisk('iscsi:user:password:iuser:ipassword@'
                             'test.example.com:::1:target')
-        self.assertEquals(i.user, 'user')
-        self.assertEquals(i.password, 'password')
-        self.assertEquals(i.iuser, 'iuser')
-        self.assertEquals(i.ipassword, 'ipassword')
-        self.assertEquals(i.host, 'test.example.com')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 1)
-        self.assertEquals(i.target, 'target')
+        self.assertEqual(i.user, 'user')
+        self.assertEqual(i.password, 'password')
+        self.assertEqual(i.iuser, 'iuser')
+        self.assertEqual(i.ipassword, 'ipassword')
+        self.assertEqual(i.host, 'test.example.com')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 1)
+        self.assertEqual(i.target, 'target')
 
         i = iscsi.IscsiDisk('iscsi:user:password:iuser:@'
                             'test.example.com:::1:target')
-        self.assertEquals(i.user, 'user')
-        self.assertEquals(i.password, 'password')
-        self.assertEquals(i.iuser, 'iuser')
-        self.assertEquals(i.ipassword, '')
-        self.assertEquals(i.host, 'test.example.com')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 1)
-        self.assertEquals(i.target, 'target')
+        self.assertEqual(i.user, 'user')
+        self.assertEqual(i.password, 'password')
+        self.assertEqual(i.iuser, 'iuser')
+        self.assertEqual(i.ipassword, '')
+        self.assertEqual(i.host, 'test.example.com')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 1)
+        self.assertEqual(i.target, 'target')
 
         i = iscsi.IscsiDisk('iscsi:user::iuser:@test.example.com:::1:target')
-        self.assertEquals(i.user, 'user')
-        self.assertEquals(i.password, '')
-        self.assertEquals(i.iuser, 'iuser')
-        self.assertEquals(i.ipassword, '')
-        self.assertEquals(i.host, 'test.example.com')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 1)
-        self.assertEquals(i.target, 'target')
+        self.assertEqual(i.user, 'user')
+        self.assertEqual(i.password, '')
+        self.assertEqual(i.iuser, 'iuser')
+        self.assertEqual(i.ipassword, '')
+        self.assertEqual(i.host, 'test.example.com')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 1)
+        self.assertEqual(i.target, 'target')
 
     # LP: #1679222
     def test_iscsi_target_parsing(self):
         i = iscsi.IscsiDisk(
             'iscsi:192.168.1.12::::iqn.2017-04.com.example.test:target-name')
-        self.assertEquals(i.user, None)
-        self.assertEquals(i.password, None)
-        self.assertEquals(i.iuser, None)
-        self.assertEquals(i.ipassword, None)
-        self.assertEquals(i.host, '192.168.1.12')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 0)
-        self.assertEquals(i.target, 'iqn.2017-04.com.example.test:target-name')
+        self.assertEqual(i.user, None)
+        self.assertEqual(i.password, None)
+        self.assertEqual(i.iuser, None)
+        self.assertEqual(i.ipassword, None)
+        self.assertEqual(i.host, '192.168.1.12')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 0)
+        self.assertEqual(i.target, 'iqn.2017-04.com.example.test:target-name')
 
         i = iscsi.IscsiDisk(
             'iscsi:[fe80::a634:d9ff:fe40:768a:6]::::'
             'iqn.2017-04.com.example.test:target-name')
-        self.assertEquals(i.user, None)
-        self.assertEquals(i.password, None)
-        self.assertEquals(i.iuser, None)
-        self.assertEquals(i.ipassword, None)
-        self.assertEquals(i.host, 'fe80::a634:d9ff:fe40:768a:6')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 0)
-        self.assertEquals(i.target, 'iqn.2017-04.com.example.test:target-name')
+        self.assertEqual(i.user, None)
+        self.assertEqual(i.password, None)
+        self.assertEqual(i.iuser, None)
+        self.assertEqual(i.ipassword, None)
+        self.assertEqual(i.host, 'fe80::a634:d9ff:fe40:768a:6')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 0)
+        self.assertEqual(i.target, 'iqn.2017-04.com.example.test:target-name')
 
         i = iscsi.IscsiDisk(
             'iscsi:test.example.com::::'
             'iqn.2017-04.com.example.test:target-name')
-        self.assertEquals(i.user, None)
-        self.assertEquals(i.password, None)
-        self.assertEquals(i.iuser, None)
-        self.assertEquals(i.ipassword, None)
-        self.assertEquals(i.host, 'test.example.com')
-        self.assertEquals(i.proto, '6')
-        self.assertEquals(i.port, 3260)
-        self.assertEquals(i.lun, 0)
-        self.assertEquals(i.target, 'iqn.2017-04.com.example.test:target-name')
+        self.assertEqual(i.user, None)
+        self.assertEqual(i.password, None)
+        self.assertEqual(i.iuser, None)
+        self.assertEqual(i.ipassword, None)
+        self.assertEqual(i.host, 'test.example.com')
+        self.assertEqual(i.proto, '6')
+        self.assertEqual(i.port, 3260)
+        self.assertEqual(i.lun, 0)
+        self.assertEqual(i.target, 'iqn.2017-04.com.example.test:target-name')
 
 
 class TestBlockIscsiVolPath(CiTestCase):
diff --git a/tests/unittests/test_block_mkfs.py b/tests/unittests/test_block_mkfs.py
index f7acbd7..5078e0e 100644
--- a/tests/unittests/test_block_mkfs.py
+++ b/tests/unittests/test_block_mkfs.py
@@ -19,20 +19,20 @@ class TestBlockMkfs(CiTestCase):
         print("expected:\n{}".format(expected))
 
         for flag in expected:
-            if type(flag) == list:
+            if isinstance(flag, list):
                 flag_name = flag[0]
                 flag_val = flag[1]
                 self.assertIn(flag_name, call)
                 flag_index = call.index(flag_name)
                 self.assertTrue(len(call) > flag_index)
-                self.assertEquals(call[flag_index + 1], flag_val)
+                self.assertEqual(call[flag_index + 1], flag_val)
                 call.remove(flag_name)
                 call.remove(flag_val)
             else:
                 self.assertIn(flag, call)
                 call.remove(flag)
         # Only remaining vals in call should be mkfs.fstype and dev path
-        self.assertEquals(len(call), 2)
+        self.assertEqual(len(call), 2)
 
     @mock.patch("curtin.block.mkfs.block")
     @mock.patch("curtin.block.mkfs.os")
@@ -49,12 +49,12 @@ class TestBlockMkfs(CiTestCase):
         mkfs.mkfs_from_config("/dev/null", config, strict=strict)
         self.assertTrue(mock_util.subp.called)
         calls = mock_util.subp.call_args_list
-        self.assertEquals(len(calls), 1)
+        self.assertEqual(len(calls), 1)
 
         # Get first function call, tuple of first positional arg and its
         # (nonexistant) keyword arg, and unpack to get cmd
         call = calls[0][0][0]
-        self.assertEquals(call[0], expected_cmd)
+        self.assertEqual(call[0], expected_cmd)
         self._assert_same_flags(call, expected_flags)
 
     def test_mkfs_ext(self):
@@ -149,9 +149,9 @@ class TestBlockMkfs(CiTestCase):
                   label="testlabel", force=True)
         expected_flags = ["-F", ["-L", "testlabel"], ["-U", self.test_uuid]]
         calls = mock_util.subp.call_args_list
-        self.assertEquals(len(calls), 1)
+        self.assertEqual(len(calls), 1)
         call = calls[0][0][0]
-        self.assertEquals(call[0], "mkfs.ext4")
+        self.assertEqual(call[0], "mkfs.ext4")
         self._assert_same_flags(call, expected_flags)
 
     @mock.patch("curtin.block.mkfs.os")
diff --git a/tests/unittests/test_block_zfs.py b/tests/unittests/test_block_zfs.py
index e392000..3ef206a 100644
--- a/tests/unittests/test_block_zfs.py
+++ b/tests/unittests/test_block_zfs.py
@@ -112,7 +112,7 @@ class TestBlockZfsZpoolCreate(CiTestCase):
         for val in [None, '', {'a': 1}, 'mydev']:
             with self.assertRaises(TypeError):
                 # All the assert methods (except assertRaises(),
-                # assertRaisesRegexp()) accept a msg argument that,
+                # assertRaisesRegex()) accept a msg argument that,
                 # if specified, is used as the error message on failure
                 print('vdev value: %s' % val)
                 zfs.zpool_create('mypool', val)
diff --git a/tests/unittests/test_commands_block_meta.py b/tests/unittests/test_commands_block_meta.py
index 25d92ab..70d4667 100644
--- a/tests/unittests/test_commands_block_meta.py
+++ b/tests/unittests/test_commands_block_meta.py
@@ -967,14 +967,14 @@ class TestFstabData(CiTestCase):
         """mount_data on non-mount type raises ValueError."""
         mnt = self.mnt.copy()
         mnt['type'] = "not-mount"
-        with self.assertRaisesRegexp(ValueError, r".*not type 'mount'"):
+        with self.assertRaisesRegex(ValueError, r".*not type 'mount'"):
             block_meta.mount_data(mnt, {mnt['id']: mnt})
 
     def test_mount_data_no_device_or_spec_raises_valueerror(self):
         """test_mount_data raises ValueError if no device or spec."""
         mnt = self.mnt.copy()
         del mnt['device']
-        with self.assertRaisesRegexp(ValueError, r".*mount.*missing.*"):
+        with self.assertRaisesRegex(ValueError, r".*mount.*missing.*"):
             block_meta.mount_data(mnt, {mnt['id']: mnt})
 
     def test_mount_data_invalid_device_ref_raises_valueerror(self):
@@ -982,7 +982,7 @@ class TestFstabData(CiTestCase):
         mnt = self.mnt.copy()
         mnt['device'] = 'myinvalid'
         scfg = OrderedDict([(i['id'], i) for i in self.base_cfg + [mnt]])
-        with self.assertRaisesRegexp(ValueError, r".*refers.*myinvalid"):
+        with self.assertRaisesRegex(ValueError, r".*refers.*myinvalid"):
             block_meta.mount_data(mnt, scfg)
 
     def test_mount_data_invalid_format_ref_raises_valueerror(self):
@@ -991,7 +991,7 @@ class TestFstabData(CiTestCase):
         scfg = OrderedDict([(i['id'], i) for i in mycfg])
         # change the 'volume' entry for the 'format' type.
         scfg['fs1']['volume'] = 'myinvalidvol'
-        with self.assertRaisesRegexp(ValueError, r".*refers.*myinvalidvol"):
+        with self.assertRaisesRegex(ValueError, r".*refers.*myinvalidvol"):
             block_meta.mount_data(scfg['m1'], scfg)
 
     def test_non_device_mount_with_spec(self):
@@ -1143,7 +1143,7 @@ class TestFstabData(CiTestCase):
         """fstab_line_for_data raises ValueError if no path and not swap."""
         fdata = block_meta.FstabData(
             spec="/dev/disk2", device=None, path="", fstype='ext3')
-        with self.assertRaisesRegexp(ValueError, r".*empty.*path"):
+        with self.assertRaisesRegex(ValueError, r".*empty.*path"):
             block_meta.fstab_line_for_data(fdata)
 
     def test_fstab_line_for_data_with_options(self):
@@ -1206,7 +1206,7 @@ class TestFstabData(CiTestCase):
         fdata = block_meta.FstabData(
             spec=None, device=None, path="/", fstype='ext3')
         match = r".*missing.*spec.*device"
-        with self.assertRaisesRegexp(ValueError, match):
+        with self.assertRaisesRegex(ValueError, match):
             block_meta.fstab_line_for_data(fdata)
 
     @patch('curtin.commands.block_meta._get_volume_type')
@@ -1362,7 +1362,7 @@ class TestFstabData(CiTestCase):
         m_subp.side_effect = my_error
 
         mp = self.tmp_path("my-mountpoint")
-        with self.assertRaisesRegexp(RuntimeError, r"Mount failed.*"):
+        with self.assertRaisesRegex(RuntimeError, r"Mount failed.*"):
             block_meta.mount_fstab_data(
                 block_meta.FstabData(device="/dev/disk1", path="/var"),
                 target=mp)
diff --git a/tests/unittests/test_commands_net_meta.py b/tests/unittests/test_commands_net_meta.py
index 76da74b..d2bd210 100644
--- a/tests/unittests/test_commands_net_meta.py
+++ b/tests/unittests/test_commands_net_meta.py
@@ -76,7 +76,7 @@ class TestNetMeta(CiTestCase):
         self.assertEqual(0, self.m_command_env.call_count)
         self.assertEqual(0, self.m_command_config.call_count)
 
-        self.assertEquals(self.args.mode, 'disabled')
+        self.assertEqual(self.args.mode, 'disabled')
         self.assertEqual(0, self.m_os_environ.get.call_count)
         self.assertEqual(0, self.m_dump_config.call_count)
         self.assertFalse(os.path.exists(self.output_network_path))
@@ -98,7 +98,7 @@ class TestNetMeta(CiTestCase):
         self.assertEqual(self.expected_exit_code, cm.exception.code)
         self.m_run_hook.assert_called_with(
             self.args.target, 'network-config')
-        self.assertEquals(self.args.mode, 'custom')
+        self.assertEqual(self.args.mode, 'custom')
         self.assertEqual(
             expected_m_command_env_calls, self.m_command_env.call_count)
         self.assertEqual(
diff --git a/tests/unittests/test_curthooks.py b/tests/unittests/test_curthooks.py
index a96f5fd..d0243b3 100644
--- a/tests/unittests/test_curthooks.py
+++ b/tests/unittests/test_curthooks.py
@@ -39,7 +39,7 @@ class TestGetFlashKernelPkgs(CiTestCase):
 
     def test__returns_flash_kernel_pkgs(self):
         self.mock_subp.return_value = 'u-boot-tools', ''
-        self.assertEquals(
+        self.assertEqual(
             'u-boot-tools', curthooks.get_flash_kernel_pkgs('arm64', False))
         self.mock_subp.assert_called_with(
             ['list-flash-kernel-packages'], capture=True)
@@ -858,7 +858,7 @@ class TestSetupGrub(CiTestCase):
         self.mock_haspkg.return_value = False
         curthooks.setup_grub(cfg, self.target, osfamily=self.distro_family,
                              variant=self.variant)
-        self.assertEquals([
+        self.assertEqual([
             call(['efibootmgr', '-o', '0001,0000'], target=self.target)],
             self.mock_subp.call_args_list)
 
@@ -901,7 +901,7 @@ class TestSetupGrub(CiTestCase):
                              variant=self.variant)
         logs = self.logs.getvalue()
         print(logs)
-        self.assertEquals([], self.mock_subp.call_args_list)
+        self.assertEqual([], self.mock_subp.call_args_list)
         self.assertIn("Using fallback UEFI reordering:", logs)
         self.assertIn("missing 'BootCurrent' value", logs)
         self.assertIn("Found new boot entries: ['0000']", logs)
@@ -951,7 +951,7 @@ class TestSetupGrub(CiTestCase):
 
         logs = self.logs.getvalue()
         print(logs)
-        self.assertEquals([], self.mock_subp.call_args_list)
+        self.assertEqual([], self.mock_subp.call_args_list)
         self.assertIn("Using fallback UEFI reordering:", logs)
         self.assertIn("missing 'BootCurrent' value", logs)
         self.assertIn("Current and Previous bootorders match", logs)
@@ -1003,7 +1003,7 @@ class TestSetupGrub(CiTestCase):
                              variant=self.variant)
         logs = self.logs.getvalue()
         print(logs)
-        self.assertEquals([
+        self.assertEqual([
             call(['efibootmgr', '-o', '0001,0000'], target=self.target)],
             self.mock_subp.call_args_list)
         self.assertIn("Using fallback UEFI reordering:", logs)
@@ -1057,7 +1057,7 @@ class TestSetupGrub(CiTestCase):
         logs = self.logs.getvalue()
         print(logs)
         print('Number of bootmgr calls: %s' % self.mock_efibootmgr.call_count)
-        self.assertEquals([
+        self.assertEqual([
             call(['efibootmgr', '-o', '%s' % (",".join(expected_order))],
                  target=self.target)],
             self.mock_subp.call_args_list)
@@ -1108,7 +1108,7 @@ class TestUefiRemoveDuplicateEntries(CiTestCase):
     def test_uefi_remove_duplicate_entries(self):
         grubcfg = {}
         curthooks.uefi_remove_duplicate_entries(grubcfg, self.target)
-        self.assertEquals([
+        self.assertEqual([
             call(['efibootmgr', '--bootnum=0001', '--delete-bootnum'],
                  target=self.target),
             call(['efibootmgr', '--bootnum=0003', '--delete-bootnum'],
@@ -1122,7 +1122,7 @@ class TestUefiRemoveDuplicateEntries(CiTestCase):
         del efiout['current']
         self.m_efibootmgr.return_value = efiout
         curthooks.uefi_remove_duplicate_entries(grubcfg, self.target)
-        self.assertEquals([
+        self.assertEqual([
             call(['efibootmgr', '--bootnum=0001', '--delete-bootnum'],
                  target=self.target),
             call(['efibootmgr', '--bootnum=0003', '--delete-bootnum'],
@@ -1135,7 +1135,7 @@ class TestUefiRemoveDuplicateEntries(CiTestCase):
             'remove_duplicate_entries': False,
         }
         curthooks.uefi_remove_duplicate_entries(grubcfg, self.target)
-        self.assertEquals([], self.m_subp.call_args_list)
+        self.assertEqual([], self.m_subp.call_args_list)
 
     @patch.object(util.ChrootableTarget, "__enter__", new=lambda a: a)
     def test_uefi_remove_duplicate_entries_skip_bootcurrent(self):
@@ -1144,7 +1144,7 @@ class TestUefiRemoveDuplicateEntries(CiTestCase):
         efiout['current'] = '0003'
         self.m_efibootmgr.return_value = efiout
         curthooks.uefi_remove_duplicate_entries(grubcfg, self.target)
-        self.assertEquals([
+        self.assertEqual([
             call(['efibootmgr', '--bootnum=0000', '--delete-bootnum'],
                  target=self.target),
             call(['efibootmgr', '--bootnum=0001', '--delete-bootnum'],
@@ -1175,7 +1175,7 @@ class TestUefiRemoveDuplicateEntries(CiTestCase):
             }
         }
         curthooks.uefi_remove_duplicate_entries(grubcfg, self.target)
-        self.assertEquals([], self.m_subp.call_args_list)
+        self.assertEqual([], self.m_subp.call_args_list)
 
 
 class TestUbuntuCoreHooks(CiTestCase):
diff --git a/tests/unittests/test_reporter.py b/tests/unittests/test_reporter.py
index 09b8bcf..d457c0c 100644
--- a/tests/unittests/test_reporter.py
+++ b/tests/unittests/test_reporter.py
@@ -123,7 +123,7 @@ class TestReporter(CiTestCase):
         webhook_handler.publish_event(event)
         webhook_handler = handlers.WebHookHandler('127.0.0.1:8000',
                                                   level="INVALID")
-        self.assertEquals(webhook_handler.level, 30)
+        self.assertEqual(webhook_handler.level, 30)
 
     @patch('curtin.reporter.events.report_event')
     def test_report_start_event(self, mock_report_event):
diff --git a/tests/unittests/test_url_helper.py b/tests/unittests/test_url_helper.py
index 1b550f6..d58cd84 100644
--- a/tests/unittests/test_url_helper.py
+++ b/tests/unittests/test_url_helper.py
@@ -33,8 +33,8 @@ class TestDownload(CiTestCase):
         self.assertRaises(url_helper.UrlError, url_helper.download,
                           "file://" + self.src_file, self.target_file,
                           retries=3, retry_delay=0)
-        self.assertEquals(4, urlreader_mock.call_count,
-                          "Didn't call UrlReader 4 times (retries=3)")
+        self.assertEqual(4, urlreader_mock.call_count,
+                         "Didn't call UrlReader 4 times (retries=3)")
 
     @mock.patch('curtin.url_helper.UrlReader')
     def test_download_file_url_no_retry(self, urlreader_mock):
@@ -45,8 +45,8 @@ class TestDownload(CiTestCase):
         self.assertRaises(url_helper.UrlError, url_helper.download,
                           "file://" + self.src_file, self.target_file,
                           retry_delay=0)
-        self.assertEquals(1, urlreader_mock.call_count,
-                          "Didn't call UrlReader once (retries=0)")
+        self.assertEqual(1, urlreader_mock.call_count,
+                         "Didn't call UrlReader once (retries=0)")
 
     @mock.patch('curtin.url_helper.UrlReader')
     def test_download_file_url_no_retry_on_client_error(self, urlreader_mock):
@@ -56,8 +56,8 @@ class TestDownload(CiTestCase):
         self.assertRaises(url_helper.UrlError, url_helper.download,
                           "file://" + self.src_file, self.target_file,
                           retries=3, retry_delay=0)
-        self.assertEquals(1, urlreader_mock.call_count,
-                          "Didn't call UrlReader once (400 class error)")
+        self.assertEqual(1, urlreader_mock.call_count,
+                         "Didn't call UrlReader once (400 class error)")
 
     def test_download_file_url_retry_then_success(self):
         """Retry downloading a file with server error and then succeed."""
@@ -71,9 +71,9 @@ class TestDownload(CiTestCase):
             urlreader_mock.side_effect = urlreader_download
             url_helper.download("file://" + self.src_file, self.target_file,
                                 retries=3, retry_delay=0)
-        self.assertEquals(2, urlreader_mock.call_count,
-                          "Didn't call UrlReader twice (first failing,"
-                          "then success)")
+        self.assertEqual(2, urlreader_mock.call_count,
+                         "Didn't call UrlReader twice (first failing,"
+                         "then success)")
         self.assertTrue(filecmp.cmp(self.src_file, self.target_file),
                         "Downloaded file differed from source file.")
 
diff --git a/tests/unittests/test_util.py b/tests/unittests/test_util.py
index 306e963..3dff57b 100644
--- a/tests/unittests/test_util.py
+++ b/tests/unittests/test_util.py
@@ -388,20 +388,20 @@ class TestGetUnsharePidArgs(CiTestCase):
         """Passing unshare_pid in as True and no command should raise."""
         self.mock_has_unshare_pid.return_value = False
         expected_msg = 'no unshare command'
-        with self.assertRaisesRegexp(RuntimeError, expected_msg):
+        with self.assertRaisesRegex(RuntimeError, expected_msg):
             util._get_unshare_pid_args(True)
 
-        with self.assertRaisesRegexp(RuntimeError, expected_msg):
+        with self.assertRaisesRegex(RuntimeError, expected_msg):
             util._get_unshare_pid_args(True, "/foo", 0)
 
     def test_unshare_pid_true_and_not_root_raises(self):
         """When unshare_pid is True for non-root an error is raised."""
         expected_msg = 'euid.* != 0'
-        with self.assertRaisesRegexp(RuntimeError, expected_msg):
+        with self.assertRaisesRegex(RuntimeError, expected_msg):
             util._get_unshare_pid_args(True, "/foo", 500)
 
         self.mock_geteuid.return_value = 500
-        with self.assertRaisesRegexp(RuntimeError, expected_msg):
+        with self.assertRaisesRegex(RuntimeError, expected_msg):
             util._get_unshare_pid_args(True)
 
     def test_euid0_target_not_slash(self):
@@ -893,7 +893,7 @@ class TestGetEFIBootMGR(CiTestCase):
     def test_calls_efibootmgr_verbose(self):
         self.in_chroot_subp_output.append(('', ''))
         util.get_efibootmgr('target')
-        self.assertEquals(
+        self.assertEqual(
             (['efibootmgr', '-v'],),
             self.mock_in_chroot_subp.call_args_list[0][0])
 
@@ -911,7 +911,7 @@ class TestGetEFIBootMGR(CiTestCase):
             Boot0005* UEFI:Network Device	BBS(131,,0x0)
             """), ''))
         observed = util.get_efibootmgr('target')
-        self.assertEquals({
+        self.assertEqual({
             'current': '0000',
             'timeout': '1 seconds',
             'order': ['0000', '0002', '0001', '0003', '0004', '0005'],
@@ -958,7 +958,7 @@ class TestGetEFIBootMGR(CiTestCase):
             Boot0005* UEFI:Network Device	BBS(131,,0x0)
             """), ''))
         observed = util.get_efibootmgr('target')
-        self.assertEquals({
+        self.assertEqual({
             'current': '0000',
             'timeout': '1 seconds',
             'order': ['0000', '0002', '0001', '0003', '0004', '0005'],
diff --git a/tests/vmtests/test_basic.py b/tests/vmtests/test_basic.py
index 616d635..39227a9 100644
--- a/tests/vmtests/test_basic.py
+++ b/tests/vmtests/test_basic.py
@@ -65,7 +65,7 @@ class TestBasicAbs(VMBaseClass):
 
         self.output_files_exist([blkid_output])
         blkid_info = self.get_blkid_data(blkid_output)
-        self.assertEquals(expected, blkid_info["PTTYPE"])
+        self.assertEqual(expected, blkid_info["PTTYPE"])
 
     def _test_partition_numbers(self, disk, expected):
         found = []
diff --git a/tests/vmtests/test_network.py b/tests/vmtests/test_network.py
index 6ff3a16..b2101ea 100644
--- a/tests/vmtests/test_network.py
+++ b/tests/vmtests/test_network.py
@@ -319,7 +319,7 @@ class TestNetworkBaseTestsAbs(VMBaseClass):
         # FIXME: remove check?
         # initial check, do we have the correct iface ?
         print('ifname={}'.format(ifname))
-        self.assertTrue(type(ipcfg) == dict, "%s is not dict" % (ipcfg))
+        self.assertTrue(isinstance(ipcfg, dict), "%s is not dict" % (ipcfg))
         print("ipcfg['interface']={}".format(ipcfg['interface']))
         self.assertEqual(ifname, ipcfg['interface'])
 
diff --git a/tests/vmtests/test_network_bridging.py b/tests/vmtests/test_network_bridging.py
index 9c90702..3f7b15e 100644
--- a/tests/vmtests/test_network_bridging.py
+++ b/tests/vmtests/test_network_bridging.py
@@ -168,7 +168,7 @@ class TestBridgeNetworkAbs(TestNetworkBaseTestsAbs):
                     return
 
             print('key=%s value=%s' % (param, value))
-            if type(value) == list:
+            if isinstance(value, list):
                 for subval in value:
                     (port, pval) = subval.split(" ")
                     print('param=%s port=%s pval=%s' % (param, port, pval))
diff --git a/tests/vmtests/test_zfsroot.py b/tests/vmtests/test_zfsroot.py
index 0e310c6..2c4fce2 100644
--- a/tests/vmtests/test_zfsroot.py
+++ b/tests/vmtests/test_zfsroot.py
@@ -34,7 +34,7 @@ class TestZfsRootAbs(VMBaseClass):
     def test_ptable(self):
         self.output_files_exist(["blkid_output_vda"])
         blkid_info = self.get_blkid_data("blkid_output_vda")
-        self.assertEquals(blkid_info["PTTYPE"], "gpt")
+        self.assertEqual(blkid_info["PTTYPE"], "gpt")
 
     @skip_if_flag('expected_failure')
     def test_zfs_list(self):
diff --git a/tools/vmtest-system-setup b/tools/vmtest-system-setup
index c34e9aa..c9c1231 100755
--- a/tools/vmtest-system-setup
+++ b/tools/vmtest-system-setup
@@ -17,7 +17,6 @@ DEPS=(
   git
   make
   net-tools
-  pep8
   python3
   python3-apt
   python3-attr
@@ -25,6 +24,8 @@ DEPS=(
   python3-jsonschema
   python3-nose
   python3-oauthlib
+  python3-parameterized
+  python3-pep8
   python3-pip
   python3-pyflakes
   python3-pytest
diff --git a/tox.ini b/tox.ini
index 2fc4027..b402910 100644
--- a/tox.ini
+++ b/tox.ini
@@ -15,7 +15,7 @@ downloadcache = ~/cache/pip
 usedevelop = True
 # LC_ALL see https://github.com/gabrielfalcao/HTTPretty/issues/223
 setenv = VIRTUAL_ENV={envdir}
-    LC_ALL = en_US.utf-8
+    LC_ALL = C
 deps = -r{toxinidir}/test-requirements.txt
     -r{toxinidir}/requirements.txt
 # noproxy needed for several of the curtin jenkins jobs
@@ -30,7 +30,6 @@ sitepackages = true
 [testenv:py3-flake8]
 basepython = python3
 deps = {[testenv]deps}
-    flake8==3.8.1
 commands = {envpython} -m flake8 {posargs:curtin tests/}
 
 [testenv:py3-pyflakes]

Follow ups