Udostępnij za pośrednictwem


Testowanie rozszerzeń Dataverse za pomocą Test Engine (wersja zapoznawcza)

Notatka

Funkcje w wersji zapoznawczej nie są przeznaczone do użytku w środowiskach produkcyjnych i mogą mieć ograniczoną funkcjonalność. Te funkcje są udostępniane przed oficjalnym wydaniem, dzięki czemu klienci mogą szybciej uzyskać do nich dostęp i przekazać opinie na ich temat.

W tym artykule wyjaśniono, jak tworzyć testy integracyjne za pomocą Dataverse. Ta funkcja zastosowuje możliwości Power Fx do nawiązywania połączeń z tabelami Dataverse.

Nawiązywanie połączenia z usługą Dataverse

Aby włączyć integrację Dataverse, dodaj parametr enableDataverseFunctions do testSettingsextensionModules :

testSettings:
  extensionModules:
    enable: true
    parameters:
      enableDataverseFunctions: true

Po włączeniu integracji z Dataverse należy otworzyć Azure CLI z użytkownikiem lub jednostką usługi, która ma prawa do środowiska Dataverse. Możesz użyć polecenia: az login Więcej informacji: zaloguj się za pomocą interfejsu wiersza polecenia platformy Azure.

Adres Dataverse URL interfejsu API używany do integracji jest uzyskiwany z nazwy domeny hosta parametru pac test run--domain lub przez zdefiniowanie zmiennej środowiskowej programu PowerShell o nazwie DATAVERSE_URL.

Włącz podgląd

Obecnie wszystkie możliwości testowania rozszerzeń w Dataverse wymagają użycia funkcji trybu zapoznawczego. Aby je włączyć, dodaj Preview do listy allowPowerFxNamespaces w extensionModules.

testSettings:
  extensionModules:
    enable: true
    allowPowerFxNamespaces:
    - Preview
    parameters:
      enableDataverseFunctions: true

Resetowanie bieżącego stanu

Zdefiniuj procedurę onTestCaseStart obsługi zdarzeń w utworzonym testowym kodzie yaml, aby wykonać typowe akcje przed każdym przypadkiem testowym. Na przykład:

testSuite:
  testSuiteName: Dataverse tests
  testSuiteDescription: Validate Power Fx can be used to run Dataverse integration tests
  persona: User1
  appLogicalName: N/A
  onTestCaseStart: |
    = ForAll(Accounts, Remove(Accounts, ThisRecord))

W tym przykładzie element ForAll służy do iteracji po tabeli i wykonywania akcji na każdym rekordzie. Funkcja Remove jest następnie używana do usuwania każdego rekordu z tabeli, aby zapewnić pustą tabelę przed wykonaniem każdego testu.

Interesujące funkcje

Te funkcje są przydatne podczas pracy z Dataverse:

  • Collect: Dodaje rekordy do tabeli.
  • CountRows: Zwraca liczbę rekordów w tabeli.
  • Pierwszy: Zwraca pierwszy rekord w tabeli.
  • ForAll: Iteruje po tabeli i wykonuje akcję na każdym rekordzie.
  • Poprawka: Aktualizuj istniejący rekord.
  • Usuń: Usuwa określony rekord z tabeli.

Kwestie wymagające rozważenia

Weź pod uwagę te zagadnienia podczas pisania kroków testu:

  • Wartości domyślne nie są obsługiwane. W związku z tym, przykłady Power Fx, takie jak Patch(Accounts, Defaults(Accounts), {name:"test"}), nie są obsługiwane.
  • Możesz użyć Collect jako alternatywy dla Patch z funkcją Defaults

Uruchamianie Dataverse testów

Za pomocą dostawcy Power Fx (powerfx) można uruchamiać testy, które wchodzą w interakcję z Dataverse, bez konieczności korzystania z kanwy lub interfejsu aplikacji modelowanej. Jest to przydatne do testowania logiki biznesowej, wtyczek, przepływów i innych usług zaplecza.

pac test run `
   --provider powerfx `
   --test-plan-file your-testplan.te.yaml `
   --tenant your-tenantid-guid-value `
   --environment-id your-environmentid-guid-value `
   --domain "https://contoso.crm.dynamics.com"

Integracja ze sztuczną inteligencją

Użycie open source'owego silnika testowego Power Apps, skompilowanego w trybie Debug, wraz z odpowiednimi ustawieniami testów umożliwi włączenie funkcji Preview.AIExecutePrompt w Twoich testach.

Dodaj następujące elementy do ustawień testu, aby włączyć integrację ze sztuczną inteligencją:

testSettings:
  extensionModules:
    enable: true
    parameters:
      enableDataverseFunctions: true
      enableAIFunctions: true

Przykładowe zastosowanie funkcji AI:

Assert("Paris" = Preview.AIExecutePrompt("Country Capital", { Country: "France" }).Text)