user81479: Could someone explain how and where in the code the bitcoin test framework calls map to C++ bitcoin core code or RPC calls such that regression suite tests the bitcoin core functionality?
Background and more details
I am writing a blockchain application and was thinking of how I can do regression while I keep developing. I wanted to leverage the design used by bitcoin (or any other blockchain application). I would expect that framework would call either C++ classes in bitcoin core directly or use RPC from python scripts such that features are tested.
I spotted that bitcoin functional tests are written in python scripts whereby test_runner.py calls a bunch of scripts testing specific features But I cannot spot in the bitcoin framework as to where it eventually calls actual bitcoin core c++ code or RPC.
Appreciate your help in spotting the code in python scripts in the framework that does it.

user48884: The functional tests test the RPCs. The unit tests test the C++ code directly by calling the functions.
The functional test frameworks uses a version of python-bitcoinrpc which can be found here. This library allows the test framework to call RPC commands as if they were python functions; authproxy handles the conversion to HTTP POST requests for the RPC server. So when you see lines like self.nodes[0].getblockchaininfo(), it is actually calling the getblockchaininfo command on node0. You will see many lines like this throughout the functional tests.

81479: <p>Could someone explain how and where in the code the bitcoin test framework calls map to C++ bitcoin core code or RPC calls such that regression suite tests the bitcoin core functionality?</p>

<p><strong>Background and more details</strong>
I am writing a blockchain application and was thinking of how I can do regression while I keep developing. I wanted to leverage the design used by bitcoin (or any other blockchain application). I would expect that framework would call either C++ classes in bitcoin core directly or use RPC from python scripts such that features are tested.</p>

<p>I spotted that bitcoin functional tests are written in python scripts whereby test_runner.py calls a bunch of scripts testing specific features But I cannot spot in the bitcoin framework as to where it eventually calls actual bitcoin core c++ code or RPC.</p>

<p>Appreciate your help in spotting the code in python scripts in the framework that does it.</p>
 48884: <p>The functional tests test the RPCs. The unit tests test the C++ code directly by calling the functions.</p>

<p>The functional test frameworks uses a version of <a href="https://github.com/jgarzik/python-bitcoinrpc" rel="noreferrer">python-bitcoinrpc</a> which can be found <a href="https://github.com/bitcoin/bitcoin/blob/master/test/functional/test_framework/authproxy.py" rel="noreferrer">here</a>. This library allows the test framework to call RPC commands as if they were python functions; authproxy handles the conversion to HTTP POST requests for the RPC server. So when you see lines like <code>self.nodes[0].getblockchaininfo()</code>, it is actually calling the <code>getblockchaininfo</code> command on <code>node0</code>. You will see many lines like this throughout the functional tests.</p>
