5.4 KiB
5.4 KiB
EspoCRM E2E Test Suite
Automatisierte End-to-End Tests für Custom EspoCRM Entities.
Überblick
Das Test-Framework führt automatisiert folgende Tests durch:
✅ CRUD-Operationen
- Create: Erstellen von Testdatensätzen für alle Custom Entities
- Read: Validierung der erstellten Datensätze
- Update: Änderung von Feldern
- Delete: Löschen der Test-Daten
🔗 Relationship-Tests
- Link: Verknüpfung von Entities über Relationships
- Unlink: Entfernung von Verknüpfungen
- Verification: Prüfung der korrekten Verknüpfung
Getestete Entities
- CMietobjekt - Mietobjekte (Wohnungen, Häuser, etc.)
- CVmhMietverhältnis - Mietverhältnisse
- CKündigung - Kündigungen
- CBeteiligte - Beteiligte Personen (Mieter, Vermieter)
- CMietinkasso - Mietinkasso-Verfahren
- CVmhRäumungsklage - Räumungsklagen
Getestete Relationships
- CVmhMietverhältnis ↔ CMietobjekt
- CKündigung ↔ CVmhMietverhältnis
- CBeteiligte ↔ CVmhMietverhältnis (als Mieter/Vermieter)
Installation
Voraussetzungen
- Python 3.6+
requestsBibliothek
pip3 install requests
Verwendung
Schnellstart
./run_e2e_tests.sh
Direkte Python-Ausführung
python3 e2e_tests.py
Konfiguration
Die Konfiguration erfolgt in e2e_tests.py:
CONFIG = {
'base_url': 'https://crm.bitbylaw.com',
'api_key': '2b0747ca34d15032aa233ae043cc61bc',
'username': 'dev-test'
}
Ausgabe
Das Framework generiert eine detaillierte Testübersicht:
================================================================================
TEST SUMMARY
================================================================================
✅ CMietobjekt: 4/4 tests passed
✓ create 0.234s
✓ read 0.123s
✓ update 0.156s
✓ delete 0.089s
✅ CVmhMietverhltnis: 4/4 tests passed
✓ create 0.267s
✓ read 0.134s
✓ update 0.178s
✓ delete 0.092s
================================================================================
Total: 24/24 tests passed (0 failed)
Time: 3.45s
================================================================================
Architektur
Komponenten
1. espocrm_api_client.py
API-Client für EspoCRM REST API mit folgenden Features:
- CRUD-Operationen (Create, Read, Update, Delete)
- Relationship-Management (Link, Unlink)
- Fehlerbehandlung und Logging
2. e2e_tests.py
Haupttest-Framework mit:
EntityTestBase: Basis-Klasse für Entity-Tests- Spezifische Test-Klassen für jede Entity
TestTracker: Ergebnis-Tracking und Reporting- Automatisches Cleanup
3. run_e2e_tests.sh
Shell-Wrapper mit:
- Dependency-Checks
- Farbiger Ausgabe
- Exit-Code-Handling
Erweiterung
Neue Entity hinzufügen
- Neue Test-Klasse erstellen:
class CMyEntityTest(EntityTestBase):
def __init__(self, client: EspoCRMAPIClient, tracker: TestTracker):
super().__init__(client, tracker)
self.entity_type = 'CMyEntity'
def run_full_test(self) -> Optional[str]:
# Create
data = {
'name': f'Test Entity {datetime.now().strftime("%Y%m%d_%H%M%S")}',
# ... weitere Felder
}
record_id = self.test_create(data)
if not record_id:
return None
# Read
self.test_read(record_id)
# Update
self.test_update(record_id, {'field': 'new_value'})
return record_id
- Test in
run_all_tests()einbinden:
print("\n🔷 Testing CMyEntity...")
myentity_test = CMyEntityTest(client, tracker)
myentity_id = myentity_test.run_full_test()
- Cleanup-Order anpassen falls Dependencies bestehen
Neue Relationships testen
# Link testen
entity_test.test_link(
record_id='123',
link_name='relationshipName',
foreign_id='456'
)
# Unlink testen
entity_test.test_unlink(
record_id='123',
link_name='relationshipName',
foreign_id='456'
)
Fehlerbehebung
Connection Fehler
❌ Connection failed: HTTPError 401
→ API-Key oder Username prüfen
Entity nicht gefunden
❌ API Error: POST https://crm.bitbylaw.com/api/v1/CMyEntity
Status: 404
→ Entity-Name prüfen (z.B. CKndigung statt CKuendigung)
Relationship nicht gefunden
AssertionError: Link not found: xyz123
→ Relationship-Name und Richtung prüfen
Best Practices
- Immer cleanup durchführen: Tests hinterlassen keine Datenreste
- Eindeutige Namen: Timestamps in Test-Daten-Namen
- Dependencies beachten: Lösch-Reihenfolge ist wichtig
- Fehlerbehandlung: Jeder Test ist isoliert
Weitere Informationen
Support
Bei Fragen oder Problemen:
- Logs prüfen: Test-Ausgabe enthält detaillierte Fehlermeldungen
- API-Dokumentation konsultieren
- Entity-Definitionen in
custom/Espo/Custom/Resources/metadata/entityDefs/prüfen