π ArchUnit Π΄Π»Ρ Python:Β Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΊΠ°ΠΊ ΡΠ½ΠΈΡ-ΡΠ΅ΡΡΡ
Python Π½Π΅ Π·Π°Π±ΠΎΡΠΈΡΡΡ ΠΎ ΡΠΎΠΌ ΠΊΠ°ΠΊ Π²Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·ΡΠ΅ΡΠ΅ ΠΊΠΎΠ΄. ΠΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΊΡΠΈΡΠΈΡ ΠΊΠΎΠ³Π΄Π° route handler ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅Ρ Π½Π°ΠΏΡΡΠΌΡΡ ΠΈΠ· ΡΠ»ΠΎΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . ΠΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΡΠΈ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ.
ΠΡΡ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ ΠΏΠΎΠΊΠ° ΠΏΡΠΎΠ΅ΠΊΡ Π½Π΅ Π²ΡΡΠΎΡ. Π ΠΏΠΎΡΠΎΠΌ ΠΊΡΠΎ-ΡΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π» sqlalchemy ΠΏΡΡΠΌΠΎ Π² Pydantic-ΡΡ Π΅ΠΌΡ β ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ°ΠΊ Π±ΡΡΡΡΠ΅Π΅.
ArchUnitPython
ΡΠ΅ΡΠ°Π΅Ρ ΡΡΠΎ: Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΆΠΈΠ²ΡΡ ΡΡΠ΄ΠΎΠΌ Ρ ΠΎΠ±ΡΡΠ½ΡΠΌΠΈ ΡΠ΅ΡΡΠ°ΠΌΠΈ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ Π² pytest.
π« ΠΠ°ΠΏΡΠ΅ΡΠΈΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ»ΠΎΡΠΌΠΈ
from archunitpython import project_files, assert_passes
def test_presentation_should_not_depend_on_database():
Β Β rule = (
Β Β Β Β project_files("src/")
Β Β Β Β .in_folder("**/presentation/**")
Β Β Β Β .should_not()
Β Β Β Β .depend_on_files()
Β Β Β Β .in_folder("**/database/**")
Β Β )
Β Β assert_passes(rule)
π ΠΠ°ΠΏΡΠ΅ΡΠΈΡΡ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ
def test_no_circular_dependencies():
Β Β rule = project_files("src/").should().have_no_cycles()
Β Β assert_passes(rule)
ΠΠΎΠ³Π΄Π° ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π½Π°ΡΡΡΠ°Π΅ΡΡΡ β ΡΠ΅ΡΡ ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠΈΠΊΠ°ΠΊΠΈΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΠΎΠ² ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄.
β Π§ΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ
β Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ»ΠΎΡΠΌΠΈ
β ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ
β Π½Π°ΡΡΡΠ΅Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ
β ΠΏΡΠ΅Π²ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ²
β Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π² Π½Π΅ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΡ ΠΌΠ΅ΡΡΠ°Ρ
pip install archunitpython
Views: 124