Files
agent-framework/python/packages/azurefunctions/tests/integration_tests
T
copilot-swe-agent[bot] 443aa5d2a5 Fix integration test worker crashes on Python 3.13
Three changes to prevent pytest-xdist workers from crashing during
Azure Functions integration tests:

1. Add `start_new_session=True` to subprocess on Linux so signals
   (e.g. from test-timeout) cannot propagate between the func host
   and the xdist worker process.

2. Add an overall 100-second budget to the fixture setup loop so
   the retry logic never exceeds the 120-second test timeout. When
   pytest-timeout's thread method fires during fixture setup and the
   thread doesn't respond, it calls os._exit() which kills the
   xdist worker – this is the root cause of the "Not properly
   terminated" crashes.

3. Remove the `UV_PYTHON: "3.10"` workaround from both workflow
   files so integration tests actually run on Python 3.13.

Co-authored-by: larohra <41490930+larohra@users.noreply.github.com>
443aa5d2a5 · 2026-02-25 17:22:39 +00:00
History
..

Sample Integration Tests

Integration tests that validate the Durable Agent Framework samples by running them as Azure Functions.

Setup

1. Create .env file

Copy .env.example to .env and fill in your Azure credentials:

cp .env.example .env

Required variables:

  • AZURE_OPENAI_ENDPOINT
  • AZURE_OPENAI_CHAT_DEPLOYMENT_NAME
  • AZURE_OPENAI_API_KEY
  • AzureWebJobsStorage
  • DURABLE_TASK_SCHEDULER_CONNECTION_STRING
  • FUNCTIONS_WORKER_RUNTIME

2. Start required services

Azurite (for orchestration tests):

docker run -d -p 10000:10000 -p 10001:10001 -p 10002:10002 mcr.microsoft.com/azure-storage/azurite

Durable Task Scheduler:

docker run -d -p 8080:8080 -p 8082:8082 -e DTS_USE_DYNAMIC_TASK_HUBS=true mcr.microsoft.com/dts/dts-emulator:latest

Running Tests

The tests automatically start and stop the Azure Functions app for each sample.

Run all sample tests

uv run pytest packages/azurefunctions/tests/integration_tests -v

Run specific sample

uv run pytest packages/azurefunctions/tests/integration_tests/test_01_single_agent.py -v

Run with verbose output

uv run pytest packages/azurefunctions/tests/integration_tests -sv

How It Works

Each test file uses pytest markers to automatically configure and start the function app:

pytestmark = [
    pytest.mark.sample("01_single_agent"),
    pytest.mark.usefixtures("function_app_for_test"),
    skip_if_azure_functions_integration_tests_disabled,
]

The function_app_for_test fixture:

  1. Loads environment variables from .env
  2. Validates required variables are present
  3. Starts the function app on a dynamically allocated port
  4. Waits for the app to be ready
  5. Runs your tests
  6. Tears down the function app

Troubleshooting

Missing environment variables: Ensure your .env file contains all required variables from .env.example.

Tests timeout: Check that Azure OpenAI credentials are valid and the service is accessible.