Ich teste mal meine Modul mit der unittest
Bibliothek. Dies beinhaltet das Zeichnen einiger Graphen mit der Bibliothek matplotlib
. Das Problem ist, dass der Test jedes Mal angehalten wird, wenn ein Diagramm gezeichnet wird, und erst nach dem Schließen des Diagramms wieder aufgenommen wird. Wie kann ich das vermeiden?Graphen beim Laufen Unittests
Antwort
werde ich meine Antwort nach dem einfachen Beispiel-Code aus dem matplotlib Tutorial Modell: http://matplotlib.org/users/pyplot_tutorial.html
Nehmen wir an, wir das folgende Modul haben, plot_graph.py
getestet werden:
import matplotlib.pyplot as plt
def func_plot():
plt.plot([1,2,3,4])
plt.ylabel('some numbers')
plt.show()
if __name__ == "__main__":
func_plot()
Die Anrufe zu show
sein können wie folgt gepatcht:
from plot_graph import func_plot
from unittest.mock import patch
@patch("plot_graph.plt.show")
def test_plot(mock_show):
assert func_plot() == None
wie Sie sehen können, sollten Sie die AnrufePatch. Sie können mehr über Patching und spöttisch in der Dokumentation finden: https://docs.python.org/3/library/unittest.mock.html.
Normalerweise ist der Abschnitt über, wo ist Patch wirklich nützlich: https://docs.python.org/3/library/unittest.mock.html#where-to-patch
Schließlich ähnliche Frage bereits auf der Website gibt es: How to run nosetests without showing of my matplotlib's graph?
Sie pyplot.show()
nicht nennen, wenn dies in den Tests erfolgt. Auch die documentation schlägt ein experimentelles block=False
Stichwort Argument für die show
Funktion.
'pyplot.show()' ist in einen meiner Module, die nicht in den Tests genannt. 'block = False' funktioniert nicht für mich. Ich denke, es ist veraltet. – bluprince13
Vielleicht ruft pyplot.close („alle“) aus Ihren Tests den Trick tun könnte. – Lukisn
Statt Hacking, können Sie versuchen, einzelne Verantwortung Prinzip von SOLID zu verwenden und schreib testbaren Code, damit du nicht in diese Art von Problemen gerätst. Nur eine Idee ...
- 1. nicht Simulator starten, wenn Unittests
- 2. Unittests von einer Eingabeaufforderung ausführen
- 3. Python-Unittests in Jenkins?
- 4. SQLAlchemy scheint innerhalb Unittests
- 5. Unittests für Endlosschleife
- 6. Winkelmesser Konfigurationsprobleme beim Laufen
- 7. Probleme beim Laufen autogen.sh
- 8. Fehler beim Laufen „Schluck“
- 9. Fehler beim Laufen jdbc
- 10. Fehler beim Laufen Xgboost
- 11. Frameworks für Unittests für Multithreading in Java
- 12. Implizit Einheit laufen Tests
- 13. Debuggen von MSTest-Unittests in VisualStudio Code
- 14. Async Unittests Setup in C#
- 15. mock php's Ressourcentyp für Unittests
- 16. Python roh Eingang in Unittests
- 17. Default Python Unittests gibt falsche Positive
- 18. ungültige Zeiger beim Laufen Gtest
- 19. Was bedeutet^beim Laufen machen?
- 20. Fehler beim Laufen ClassSpy java
- 21. Illegal beim Laufen Funken Beispiel
- 22. Problem beim Zeichnen von Graphen mit CorePlot
- 23. Kentico 10 UnitTests funktionieren nicht OneTimeSetUp NullReferenceException
- 24. UnitTests und Spring - neue Bohnen erstellen?
- 25. Datenbankzeit in Unittests einfrieren (django & sqlite)
- 26. Benutzerdefinierte Kontextprozessoren, UnitTests und Request Factory
- 27. Unittests können nicht erstellt werden IntelliJ
- 28. Symfony/Doctrine UnitTests mit SQLite-Speicher DB
- 29. Funktionale Graphen
- 30. Bower installieren langsam beim laufen von teamcity
ich meine Antwort mit einem Beispiel aktualisiert –