Could be more precise in that these strings are on the same log line:
0diff --git a/test/functional/feature_assumevalid.py b/test/functional/feature_assumevalid.py
1index 544edfdb99..9ebaddb74f 100755
2--- a/test/functional/feature_assumevalid.py
3+++ b/test/functional/feature_assumevalid.py
4@@ -150,8 +150,9 @@ class AssumeValidTest(BitcoinTestFramework):
5 p2p0.send_header_for_blocks(self.blocks[2000:])
6
7 # Send blocks to node0. Block 102 will be rejected.
8- with self.nodes[0].assert_debug_log(expected_msgs=['Enabling signature validations at block [#1](/bitcoin-bitcoin/1/)',
9- 'assumevalid=0 (always verify)']): # AssumeValid::CHECKED
10+ block_1_hash = self.blocks[0].hash_hex
11+ with self.nodes[0].assert_debug_log(expected_msgs=[f'Enabling signature validations at block [#1](/bitcoin-bitcoin/1/) ({block_1_hash}): assumevalid=0 (always verify)', # AssumeValid::CHECKED
12+ 'Block validation error: block-script-verify-flag-failed']):
13 self.send_blocks_until_disconnected(p2p0)
14 self.wait_until(lambda: self.nodes[0].getblockcount() >= COINBASE_MATURITY + 1)
15 assert_equal(self.nodes[0].getblockcount(), COINBASE_MATURITY + 1)
16@@ -162,8 +163,7 @@ class AssumeValidTest(BitcoinTestFramework):
17 p2p1.send_header_for_blocks(self.blocks[0:2000])
18 p2p1.send_header_for_blocks(self.blocks[2000:])
19 with self.nodes[1].assert_debug_log(expected_msgs=['Disabling signature validations at block [#1](/bitcoin-bitcoin/1/)', # AssumeValid::SKIPPED
20- 'Enabling signature validations at block [#103](/bitcoin-bitcoin/103/)',
21- 'block not part of assumevalid chain']): # AssumeValid::CHECKED_NOT_UNDER_ASSUMEVALID
22+ f'Enabling signature validations at block [#103](/bitcoin-bitcoin/103/) ({self.blocks[102].hash_hex}): block not part of assumevalid chain']): # AssumeValid::CHECKED_NOT_UNDER_ASSUMEVALID
23 # Send all blocks to node1. All blocks will be accepted.
24 for i in range(2202):
25 p2p1.send_without_ping(msg_block(self.blocks[i]))
26@@ -177,8 +177,8 @@ class AssumeValidTest(BitcoinTestFramework):
27 p2p2.send_header_for_blocks(self.blocks[0:200])
28
29 # Send blocks to node2. Block 102 will be rejected.
30- with self.nodes[2].assert_debug_log(expected_msgs=["Enabling signature validations at block [#1](/bitcoin-bitcoin/1/)",
31- "too recent relative to best header"]): # AssumeValid::CHECKED_NOT_BURIED_ENOUGH
32+ with self.nodes[2].assert_debug_log(expected_msgs=[f"Enabling signature validations at block [#1](/bitcoin-bitcoin/1/) ({block_1_hash}): too recent relative to best header", # AssumeValid::CHECKED_NOT_BURIED_ENOUGH
33+ "Block validation error: block-script-verify-flag-failed"]):
34 self.send_blocks_until_disconnected(p2p2)
35 self.wait_until(lambda: self.nodes[2].getblockcount() >= COINBASE_MATURITY + 1)
36 assert_equal(self.nodes[2].getblockcount(), COINBASE_MATURITY + 1)
37@@ -191,13 +191,11 @@ class AssumeValidTest(BitcoinTestFramework):
38 self.wait_until(lambda: self.nodes[3].getblockcount())
39
40 # Reindex to deterministically hit specific assumevalid gates (no races with header downloads/chainwork during startup).
41- with self.nodes[3].assert_debug_log(expected_msgs=["Enabling signature validations at block [#1](/bitcoin-bitcoin/1/)",
42- "assumevalid hash not in headers"]): # AssumeValid::CHECKED_HASH_NOT_IN_HEADERS
43+ with self.nodes[3].assert_debug_log(expected_msgs=[f"Enabling signature validations at block [#1](/bitcoin-bitcoin/1/) ({block_1_hash}): assumevalid hash not in headers"]): # AssumeValid::CHECKED_HASH_NOT_IN_HEADERS
44 self.restart_node(3, extra_args=["-reindex-chainstate", "-assumevalid=1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"])
45 assert_equal(self.nodes[3].getblockcount(), 1)
46
47- with self.nodes[3].assert_debug_log(expected_msgs=["Enabling signature validations at block [#1](/bitcoin-bitcoin/1/)",
48- "best header chainwork below minimumchainwork"]): # AssumeValid::CHECKED_BELOW_MIN_CHAINWORK
49+ with self.nodes[3].assert_debug_log(expected_msgs=[f"Enabling signature validations at block [#1](/bitcoin-bitcoin/1/) ({block_1_hash}): best header chainwork below minimumchainwork"]): # AssumeValid::CHECKED_BELOW_MIN_CHAINWORK
50 self.restart_node(3, extra_args=["-reindex-chainstate", "-assumevalid=" + block102.hash_hex, "-minimumchainwork=0xffff"])
51 assert_equal(self.nodes[3].getblockcount(), 1)
52
(Also adds check for “Block validation error”).