diff --git a/doc/functional-tests.md b/doc/functional-tests.md
--- a/doc/functional-tests.md
+++ b/doc/functional-tests.md
@@ -235,7 +235,7 @@
 thread.)
 
 - Can be used to write tests where specific P2P protocol behavior is tested.
-Examples tests are `p2p-accept-block.py`, `p2p-compactblocks.py`.
+Examples tests are `p2p_unrequested_blocks.py`, `p2p_compactblocks.py`.
 
 #### Comptool
 
@@ -281,7 +281,7 @@
     acceptance is tested against the given outcome.
 
 - For examples of tests written in this framework, see
-  `invalidblockrequest.py` and `p2p-fullblocktest.py`.
+  `p2p_invalid_block.py` and `feature_block.py`.
 
 ### test-framework modules
 
diff --git a/test/functional/assumevalid.py b/test/functional/feature_assumevalid.py
rename from test/functional/assumevalid.py
rename to test/functional/feature_assumevalid.py
diff --git a/test/functional/bip68-sequence.py b/test/functional/feature_bip68_sequence.py
rename from test/functional/bip68-sequence.py
rename to test/functional/feature_bip68_sequence.py
diff --git a/test/functional/p2p-fullblocktest.py b/test/functional/feature_block.py
rename from test/functional/p2p-fullblocktest.py
rename to test/functional/feature_block.py
diff --git a/test/functional/bip65-cltv-p2p.py b/test/functional/feature_cltv.py
rename from test/functional/bip65-cltv-p2p.py
rename to test/functional/feature_cltv.py
diff --git a/test/functional/conf_args.py b/test/functional/feature_config_args.py
rename from test/functional/conf_args.py
rename to test/functional/feature_config_args.py
diff --git a/test/functional/bip68-112-113-p2p.py b/test/functional/feature_csv_activation.py
rename from test/functional/bip68-112-113-p2p.py
rename to test/functional/feature_csv_activation.py
diff --git a/test/functional/dbcrash.py b/test/functional/feature_dbcrash.py
rename from test/functional/dbcrash.py
rename to test/functional/feature_dbcrash.py
diff --git a/test/functional/bipdersig-p2p.py b/test/functional/feature_dersig.py
rename from test/functional/bipdersig-p2p.py
rename to test/functional/feature_dersig.py
diff --git a/test/functional/maxuploadtarget.py b/test/functional/feature_maxuploadtarget.py
rename from test/functional/maxuploadtarget.py
rename to test/functional/feature_maxuploadtarget.py
diff --git a/test/functional/minchainwork.py b/test/functional/feature_minchainwork.py
rename from test/functional/minchainwork.py
rename to test/functional/feature_minchainwork.py
diff --git a/test/functional/notifications.py b/test/functional/feature_notifications.py
rename from test/functional/notifications.py
rename to test/functional/feature_notifications.py
diff --git a/test/functional/nulldummy.py b/test/functional/feature_nulldummy.py
rename from test/functional/nulldummy.py
rename to test/functional/feature_nulldummy.py
diff --git a/test/functional/proxy_test.py b/test/functional/feature_proxy.py
rename from test/functional/proxy_test.py
rename to test/functional/feature_proxy.py
diff --git a/test/functional/pruning.py b/test/functional/feature_pruning.py
rename from test/functional/pruning.py
rename to test/functional/feature_pruning.py
diff --git a/test/functional/reindex.py b/test/functional/feature_reindex.py
rename from test/functional/reindex.py
rename to test/functional/feature_reindex.py
diff --git a/test/functional/uacomment.py b/test/functional/feature_uacomment.py
rename from test/functional/uacomment.py
rename to test/functional/feature_uacomment.py
diff --git a/test/functional/bitcoin_cli.py b/test/functional/interface_bitcoin_cli.py
rename from test/functional/bitcoin_cli.py
rename to test/functional/interface_bitcoin_cli.py
diff --git a/test/functional/httpbasics.py b/test/functional/interface_http.py
rename from test/functional/httpbasics.py
rename to test/functional/interface_http.py
diff --git a/test/functional/rest.py b/test/functional/interface_rest.py
rename from test/functional/rest.py
rename to test/functional/interface_rest.py
diff --git a/test/functional/zmq_test.py b/test/functional/interface_zmq.py
rename from test/functional/zmq_test.py
rename to test/functional/interface_zmq.py
diff --git a/test/functional/mempool_resurrect_test.py b/test/functional/mempool_resurrect.py
rename from test/functional/mempool_resurrect_test.py
rename to test/functional/mempool_resurrect.py
diff --git a/test/functional/mempool_spendcoinbase.py b/test/functional/mempool_spend_coinbase.py
rename from test/functional/mempool_spendcoinbase.py
rename to test/functional/mempool_spend_coinbase.py
diff --git a/test/functional/mining.py b/test/functional/mining_basic.py
rename from test/functional/mining.py
rename to test/functional/mining_basic.py
diff --git a/test/functional/getblocktemplate_longpoll.py b/test/functional/mining_getblocktemplate_longpoll.py
rename from test/functional/getblocktemplate_longpoll.py
rename to test/functional/mining_getblocktemplate_longpoll.py
diff --git a/test/functional/prioritise_transaction.py b/test/functional/mining_prioritisetransaction.py
rename from test/functional/prioritise_transaction.py
rename to test/functional/mining_prioritisetransaction.py
diff --git a/test/functional/p2p-compactblocks.py b/test/functional/p2p_compactblocks.py
rename from test/functional/p2p-compactblocks.py
rename to test/functional/p2p_compactblocks.py
diff --git a/test/functional/disconnect_ban.py b/test/functional/p2p_disconnect_ban.py
rename from test/functional/disconnect_ban.py
rename to test/functional/p2p_disconnect_ban.py
diff --git a/test/functional/p2p-feefilter.py b/test/functional/p2p_feefilter.py
rename from test/functional/p2p-feefilter.py
rename to test/functional/p2p_feefilter.py
diff --git a/test/functional/p2p-fingerprint.py b/test/functional/p2p_fingerprint.py
rename from test/functional/p2p-fingerprint.py
rename to test/functional/p2p_fingerprint.py
diff --git a/test/functional/invalidblockrequest.py b/test/functional/p2p_invalid_block.py
rename from test/functional/invalidblockrequest.py
rename to test/functional/p2p_invalid_block.py
diff --git a/test/functional/invalidtxrequest.py b/test/functional/p2p_invalid_tx.py
rename from test/functional/invalidtxrequest.py
rename to test/functional/p2p_invalid_tx.py
diff --git a/test/functional/p2p-leaktests.py b/test/functional/p2p_leak.py
rename from test/functional/p2p-leaktests.py
rename to test/functional/p2p_leak.py
diff --git a/test/functional/p2p-mempool.py b/test/functional/p2p_mempool.py
rename from test/functional/p2p-mempool.py
rename to test/functional/p2p_mempool.py
diff --git a/test/functional/node_network_limited.py b/test/functional/p2p_node_network_limited.py
rename from test/functional/node_network_limited.py
rename to test/functional/p2p_node_network_limited.py
diff --git a/test/functional/sendheaders.py b/test/functional/p2p_sendheaders.py
rename from test/functional/sendheaders.py
rename to test/functional/p2p_sendheaders.py
diff --git a/test/functional/p2p-timeouts.py b/test/functional/p2p_timeouts.py
rename from test/functional/p2p-timeouts.py
rename to test/functional/p2p_timeouts.py
diff --git a/test/functional/p2p-acceptblock.py b/test/functional/p2p_unrequested_blocks.py
rename from test/functional/p2p-acceptblock.py
rename to test/functional/p2p_unrequested_blocks.py
diff --git a/test/functional/rpcbind_test.py b/test/functional/rpc_bind.py
rename from test/functional/rpcbind_test.py
rename to test/functional/rpc_bind.py
diff --git a/test/functional/blockchain.py b/test/functional/rpc_blockchain.py
rename from test/functional/blockchain.py
rename to test/functional/rpc_blockchain.py
diff --git a/test/functional/decodescript.py b/test/functional/rpc_decodescript.py
rename from test/functional/decodescript.py
rename to test/functional/rpc_decodescript.py
diff --git a/test/functional/fundrawtransaction.py b/test/functional/rpc_fundrawtransaction.py
rename from test/functional/fundrawtransaction.py
rename to test/functional/rpc_fundrawtransaction.py
diff --git a/test/functional/getchaintips.py b/test/functional/rpc_getchaintips.py
rename from test/functional/getchaintips.py
rename to test/functional/rpc_getchaintips.py
diff --git a/test/functional/invalidateblock.py b/test/functional/rpc_invalidateblock.py
rename from test/functional/invalidateblock.py
rename to test/functional/rpc_invalidateblock.py
diff --git a/test/functional/listtransactions.py b/test/functional/rpc_listtransactions.py
rename from test/functional/listtransactions.py
rename to test/functional/rpc_listtransactions.py
diff --git a/test/functional/rpcnamedargs.py b/test/functional/rpc_named_arguments.py
rename from test/functional/rpcnamedargs.py
rename to test/functional/rpc_named_arguments.py
diff --git a/test/functional/net.py b/test/functional/rpc_net.py
rename from test/functional/net.py
rename to test/functional/rpc_net.py
diff --git a/test/functional/preciousblock.py b/test/functional/rpc_preciousblock.py
rename from test/functional/preciousblock.py
rename to test/functional/rpc_preciousblock.py
diff --git a/test/functional/rawtransactions.py b/test/functional/rpc_rawtransaction.py
rename from test/functional/rawtransactions.py
rename to test/functional/rpc_rawtransaction.py
diff --git a/test/functional/signmessages.py b/test/functional/rpc_signmessage.py
rename from test/functional/signmessages.py
rename to test/functional/rpc_signmessage.py
diff --git a/test/functional/signrawtransactions.py b/test/functional/rpc_signrawtransaction.py
rename from test/functional/signrawtransactions.py
rename to test/functional/rpc_signrawtransaction.py
diff --git a/test/functional/merkle_blocks.py b/test/functional/rpc_txoutproof.py
rename from test/functional/merkle_blocks.py
rename to test/functional/rpc_txoutproof.py
diff --git a/test/functional/uptime.py b/test/functional/rpc_uptime.py
rename from test/functional/uptime.py
rename to test/functional/rpc_uptime.py
diff --git a/test/functional/multi_rpc.py b/test/functional/rpc_users.py
rename from test/functional/multi_rpc.py
rename to test/functional/rpc_users.py
diff --git a/test/functional/timing.json b/test/functional/timing.json
--- a/test/functional/timing.json
+++ b/test/functional/timing.json
@@ -1,8 +1,4 @@
 [
- {
-  "name": "abandonconflict.py",
-  "time": 18
- },
  {
   "name": "abc-checkdatasig-activation.py",
   "time": 5
@@ -13,7 +9,7 @@
  },
  {
   "name": "abc-finalize-block.py",
-  "time": 7
+  "time": 8
  },
  {
   "name": "abc-high_priority_transaction.py",
@@ -21,23 +17,23 @@
  },
  {
   "name": "abc-magnetic-anomaly-activation.py",
-  "time": 8
+  "time": 9
  },
  {
   "name": "abc-magnetic-anomaly-mining.py",
-  "time": 19
+  "time": 15
  },
  {
   "name": "abc-mempool-accept-txn.py",
-  "time": 10
+  "time": 6
  },
  {
   "name": "abc-p2p-compactblocks.py",
-  "time": 743
+  "time": 753
  },
  {
   "name": "abc-p2p-fullblocktest.py",
-  "time": 125
+  "time": 120
  },
  {
   "name": "abc-parkedchain.py",
@@ -45,11 +41,11 @@
  },
  {
   "name": "abc-replay-protection.py",
-  "time": 6
+  "time": 7
  },
  {
   "name": "abc-rpc.py",
-  "time": 2
+  "time": 3
  },
  {
   "name": "abc-sync-chain.py",
@@ -57,318 +53,322 @@
  },
  {
   "name": "abc-transaction-ordering.py",
-  "time": 8
+  "time": 10
  },
  {
-  "name": "assumevalid.py",
-  "time": 66
+  "name": "example_test.py",
+  "time": 3
  },
  {
-  "name": "bip65-cltv-p2p.py",
-  "time": 17
+  "name": "feature_assumevalid.py",
+  "time": 38
  },
  {
-  "name": "bip68-112-113-p2p.py",
-  "time": 28
+  "name": "feature_bip68_sequence.py",
+  "time": 29
  },
  {
-  "name": "bip68-sequence.py",
-  "time": 22
+  "name": "feature_block.py",
+  "time": 190
  },
  {
-  "name": "bipdersig-p2p.py",
-  "time": 46
+  "name": "feature_cltv.py",
+  "time": 20
  },
  {
-  "name": "bitcoin_cli.py",
-  "time": 3
+  "name": "feature_config_args.py",
+  "time": 14
  },
  {
-  "name": "blockchain.py",
-  "time": 11
+  "name": "feature_csv_activation.py",
+  "time": 31
  },
  {
-  "name": "dbcrash.py",
+  "name": "feature_dbcrash.py",
   "time": 537
  },
  {
-  "name": "conf_args.py",
-  "time": 13
- },
- {
-  "name": "decodescript.py",
-  "time": 2
+  "name": "feature_dersig.py",
+  "time": 19
  },
  {
-  "name": "disablewallet.py",
-  "time": 2
+  "name": "feature_maxuploadtarget.py",
+  "time": 30
  },
  {
-  "name": "disconnect_ban.py",
+  "name": "feature_minchainwork.py",
   "time": 7
  },
  {
-  "name": "example_test.py",
-  "time": 3
+  "name": "feature_notifications.py",
+  "time": 8
  },
  {
-  "name": "fundrawtransaction.py",
-  "time": 42
+  "name": "feature_nulldummy.py",
+  "time": 8
  },
  {
-  "name": "getblocktemplate_longpoll.py",
-  "time": 68
+  "name": "feature_proxy.py",
+  "time": 4
  },
  {
-  "name": "getchaintips.py",
-  "time": 5
+  "name": "feature_pruning.py",
+  "time": 1001
  },
  {
-  "name": "httpbasics.py",
-  "time": 3
+  "name": "feature_reindex.py",
+  "time": 44
  },
  {
-  "name": "import-rescan.py",
-  "time": 18
+  "name": "feature_uacomment.py",
+  "time": 7
  },
  {
-  "name": "importmulti.py",
-  "time": 16
+  "name": "interface_bitcoin_cli.py",
+  "time": 3
  },
  {
-  "name": "importprunedfunds.py",
-  "time": 5
+  "name": "interface_http.py",
+  "time": 3
  },
  {
-  "name": "invalidateblock.py",
-  "time": 8
+  "name": "interface_rest.py",
+  "time": 10
  },
  {
-  "name": "invalidblockrequest.py",
+  "name": "interface_zmq.py",
   "time": 5
  },
  {
-  "name": "invalidtxrequest.py",
-  "time": 6
+  "name": "mempool_limit.py",
+  "time": 7
  },
  {
-  "name": "keypool-topup.py",
-  "time": 18
+  "name": "mempool_packages.py",
+  "time": 27
  },
  {
-  "name": "keypool.py",
-  "time": 9
+  "name": "mempool_persist.py",
+  "time": 19
  },
  {
-  "name": "listsinceblock.py",
+  "name": "mempool_reorg.py",
   "time": 6
  },
  {
-  "name": "listtransactions.py",
-  "time": 7
+  "name": "mempool_resurrect.py",
+  "time": 3
  },
  {
-  "name": "maxuploadtarget.py",
-  "time": 29
+  "name": "mempool_spend_coinbase.py",
+  "time": 3
  },
  {
-  "name": "mempool_limit.py",
-  "time": 7
+  "name": "mempool_spendcoinbase.py",
+  "time": 3
  },
  {
-  "name": "mempool_packages.py",
-  "time": 70
+  "name": "mining_basic.py",
+  "time": 3
  },
  {
-  "name": "mempool_persist.py",
-  "time": 19
+  "name": "mining_getblocktemplate_longpoll.py",
+  "time": 84
  },
  {
-  "name": "mempool_reorg.py",
-  "time": 3
+  "name": "mining_prioritisetransaction.py",
+  "time": 9
  },
  {
-  "name": "mempool_resurrect_test.py",
-  "time": 3
+  "name": "p2p_compactblocks.py",
+  "time": 26
  },
  {
-  "name": "mempool_spendcoinbase.py",
-  "time": 2
+  "name": "p2p_disconnect_ban.py",
+  "time": 8
  },
  {
-  "name": "merkle_blocks.py",
-  "time": 5
+  "name": "p2p_feefilter.py",
+  "time": 32
  },
  {
-  "name": "minchainwork.py",
-  "time": 7
+  "name": "p2p_fingerprint.py",
+  "time": 9
  },
  {
-  "name": "mining.py",
-  "time": 3
+  "name": "p2p_invalid_block.py",
+  "time": 6
  },
  {
-  "name": "multi_rpc.py",
-  "time": 4
+  "name": "p2p_invalid_tx.py",
+  "time": 5
  },
  {
-  "name": "multiwallet.py",
-  "time": 9
+  "name": "p2p_leak.py",
+  "time": 8
  },
  {
-  "name": "net.py",
+  "name": "p2p_mempool.py",
   "time": 3
  },
  {
-  "name": "notifications.py",
-  "time": 7
+  "name": "p2p_node_network_limited.py",
+  "time": 10
  },
  {
-  "name": "nulldummy.py",
-  "time": 6
+  "name": "p2p_sendheaders.py",
+  "time": 34
  },
  {
-  "name": "p2p-acceptblock.py",
-  "time": 45
+  "name": "p2p_timeouts.py",
+  "time": 65
  },
  {
-  "name": "p2p-compactblocks.py",
-  "time": 21
+  "name": "p2p_unrequested_blocks.py",
+  "time": 11
  },
  {
-  "name": "p2p-feefilter.py",
-  "time": 26
+  "name": "rpc_bind.py",
+  "time": 24
  },
  {
-  "name": "p2p-fingerprint.py",
-  "time": 9
+  "name": "rpc_blockchain.py",
+  "time": 12
  },
  {
-  "name": "p2p-fullblocktest.py",
-  "time": 189
+  "name": "rpc_decodescript.py",
+  "time": 3
  },
  {
-  "name": "p2p-leaktests.py",
-  "time": 8
+  "name": "rpc_fundrawtransaction.py",
+  "time": 55
  },
  {
-  "name": "p2p-mempool.py",
-  "time": 3
+  "name": "rpc_getchaintips.py",
+  "time": 5
  },
  {
-  "name": "p2p-timeouts.py",
-  "time": 65
+  "name": "rpc_invalidateblock.py",
+  "time": 9
  },
  {
-  "name": "preciousblock.py",
-  "time": 4
+  "name": "rpc_listtransactions.py",
+  "time": 10
  },
  {
-  "name": "prioritise_transaction.py",
-  "time": 6
+  "name": "rpc_named_arguments.py",
+  "time": 3
  },
  {
-  "name": "proxy_test.py",
+  "name": "rpc_net.py",
   "time": 4
  },
  {
-  "name": "pruning.py",
-  "time": 1039
+  "name": "rpc_preciousblock.py",
+  "time": 5
  },
  {
-  "name": "rawtransactions.py",
-  "time": 16
+  "name": "rpc_rawtransaction.py",
+  "time": 26
  },
  {
-  "name": "reindex.py",
-  "time": 13
+  "name": "rpc_signmessage.py",
+  "time": 3
  },
  {
-  "name": "resendwallettransactions.py",
-  "time": 5
+  "name": "rpc_signrawtransaction.py",
+  "time": 3
  },
  {
-  "name": "rest.py",
-  "time": 9
+  "name": "rpc_txoutproof.py",
+  "time": 6
  },
  {
-  "name": "rpcbind_test.py",
-  "time": 24
+  "name": "rpc_uptime.py",
+  "time": 3
  },
  {
-  "name": "rpcnamedargs.py",
-  "time": 3
+  "name": "rpc_users.py",
+  "time": 4
  },
  {
-  "name": "sendheaders.py",
+  "name": "wallet_abandonconflict.py",
   "time": 18
  },
  {
-  "name": "signmessages.py",
-  "time": 2
+  "name": "wallet_accounts.py",
+  "time": 14
  },
  {
-  "name": "signrawtransactions.py",
-  "time": 2
+  "name": "wallet_backup.py",
+  "time": 144
  },
  {
-  "name": "txn_clone.py",
-  "time": 5
+  "name": "wallet_basic.py",
+  "time": 50
  },
  {
-  "name": "txn_clone.py --mineblock",
-  "time": 5
+  "name": "wallet_disable.py",
+  "time": 2
  },
  {
-  "name": "txn_doublespend.py",
-  "time": 5
+  "name": "wallet_dump.py",
+  "time": 8
  },
  {
-  "name": "txn_doublespend.py --mineblock",
-  "time": 5
+  "name": "wallet_encryption.py",
+  "time": 9
  },
  {
-  "name": "uacomment.py",
-  "time": 6
+  "name": "wallet_hd.py",
+  "time": 118
  },
  {
-  "name": "uptime.py",
-  "time": 2
+  "name": "wallet_import_rescan.py",
+  "time": 15
  },
  {
-  "name": "wallet.py",
-  "time": 67
+  "name": "wallet_importmulti.py",
+  "time": 15
  },
  {
-  "name": "wallet_accounts.py",
-  "time": 14
+  "name": "wallet_importprunedfunds.py",
+  "time": 5
  },
  {
-  "name": "wallet_dump.py",
+  "name": "wallet_keypool.py",
   "time": 8
  },
  {
-  "name": "wallet_encryption.py",
+  "name": "wallet_keypool_topup.py",
+  "time": 18
+ },
+ {
+  "name": "wallet_listreceivedby.py",
   "time": 9
  },
  {
-  "name": "wallet_hd.py",
-  "time": 122
+  "name": "wallet_listsinceblock.py",
+  "time": 6
  },
  {
-  "name": "wallet_receivedby.py",
-  "time": 9
+  "name": "wallet_multiwallet.py",
+  "time": 16
  },
  {
-  "name": "walletbackup.py",
-  "time": 147
+  "name": "wallet_resendwallettransactions.py",
+  "time": 5
  },
  {
-  "name": "zapwallettxes.py",
-  "time": 12
+  "name": "wallet_txn_clone.py",
+  "time": 5
  },
  {
-  "name": "zmq_test.py",
-  "time": 7
+  "name": "wallet_txn_doublespend.py",
+  "time": 5
+ },
+ {
+  "name": "wallet_zapwallettxes.py",
+  "time": 13
  }
 ]
\ No newline at end of file
diff --git a/test/functional/abandonconflict.py b/test/functional/wallet_abandonconflict.py
rename from test/functional/abandonconflict.py
rename to test/functional/wallet_abandonconflict.py
diff --git a/test/functional/walletbackup.py b/test/functional/wallet_backup.py
rename from test/functional/walletbackup.py
rename to test/functional/wallet_backup.py
diff --git a/test/functional/wallet.py b/test/functional/wallet_basic.py
rename from test/functional/wallet.py
rename to test/functional/wallet_basic.py
diff --git a/test/functional/disablewallet.py b/test/functional/wallet_disable.py
rename from test/functional/disablewallet.py
rename to test/functional/wallet_disable.py
diff --git a/test/functional/import-rescan.py b/test/functional/wallet_import_rescan.py
rename from test/functional/import-rescan.py
rename to test/functional/wallet_import_rescan.py
diff --git a/test/functional/importmulti.py b/test/functional/wallet_importmulti.py
rename from test/functional/importmulti.py
rename to test/functional/wallet_importmulti.py
diff --git a/test/functional/importprunedfunds.py b/test/functional/wallet_importprunedfunds.py
rename from test/functional/importprunedfunds.py
rename to test/functional/wallet_importprunedfunds.py
diff --git a/test/functional/keypool.py b/test/functional/wallet_keypool.py
rename from test/functional/keypool.py
rename to test/functional/wallet_keypool.py
diff --git a/test/functional/keypool-topup.py b/test/functional/wallet_keypool_topup.py
rename from test/functional/keypool-topup.py
rename to test/functional/wallet_keypool_topup.py
diff --git a/test/functional/wallet_receivedby.py b/test/functional/wallet_listreceivedby.py
rename from test/functional/wallet_receivedby.py
rename to test/functional/wallet_listreceivedby.py
diff --git a/test/functional/listsinceblock.py b/test/functional/wallet_listsinceblock.py
rename from test/functional/listsinceblock.py
rename to test/functional/wallet_listsinceblock.py
diff --git a/test/functional/multiwallet.py b/test/functional/wallet_multiwallet.py
rename from test/functional/multiwallet.py
rename to test/functional/wallet_multiwallet.py
diff --git a/test/functional/resendwallettransactions.py b/test/functional/wallet_resendwallettransactions.py
rename from test/functional/resendwallettransactions.py
rename to test/functional/wallet_resendwallettransactions.py
diff --git a/test/functional/txn_clone.py b/test/functional/wallet_txn_clone.py
rename from test/functional/txn_clone.py
rename to test/functional/wallet_txn_clone.py
diff --git a/test/functional/txn_doublespend.py b/test/functional/wallet_txn_doublespend.py
rename from test/functional/txn_doublespend.py
rename to test/functional/wallet_txn_doublespend.py
diff --git a/test/functional/zapwallettxes.py b/test/functional/wallet_zapwallettxes.py
rename from test/functional/zapwallettxes.py
rename to test/functional/wallet_zapwallettxes.py