Wie funktioniert das Bitcoin-Funktionstest-Framework?

Könnte jemand erklären, wie und wo im Code die Aufrufe des Bitcoin-Testframeworks dem C++-Bitcoin-Kerncode oder RPC-Aufrufen zugeordnet sind, sodass die Regressionssuite die Bitcoin-Kernfunktionalität testet?

Hintergrund und weitere Details Ich schreibe eine Blockchain-Anwendung und habe darüber nachgedacht, wie ich eine Regression durchführen kann, während ich mich weiterentwickle. Ich wollte das von Bitcoin (oder jeder anderen Blockchain-Anwendung) verwendete Design nutzen. Ich würde erwarten, dass das Framework entweder C++-Klassen im Bitcoin-Kern direkt aufruft oder RPC von Python-Skripten verwendet, sodass Funktionen getestet werden.

Ich habe festgestellt, dass Bitcoin-Funktionstests in Python-Skripten geschrieben sind, wobei test_runner.py eine Reihe von Skripten aufruft, die bestimmte Funktionen testen. Aber ich kann im Bitcoin-Framework nicht erkennen, wo es schließlich den tatsächlichen Bitcoin-Core-C++-Code oder RPC aufruft.

Vielen Dank für Ihre Hilfe beim Erkennen des Codes in Python-Skripten in dem Framework, das dies tut.

Antworten (1)

Die Funktionstests testen die RPCs. Die Unit-Tests testen den C++-Code direkt durch den Aufruf der Funktionen.

Das Funktionstest-Framework verwendet eine Version von python-bitcoinrpc , die hier zu finden ist . Diese Bibliothek ermöglicht es dem Testframework, RPC-Befehle so aufzurufen, als wären sie Python-Funktionen; authproxy verarbeitet die Konvertierung in HTTP-POST-Anforderungen für den RPC-Server. Wenn Sie also Zeilen wie sehen self.nodes[0].getblockchaininfo(), ruft es eigentlich den getblockchaininfoBefehl auf auf node0. Sie werden während der Funktionstests viele solcher Zeilen sehen.