Runs Azure Functions locally using Azure Functions Core Tools v4 (`func start`), Azurite storage emulation, and framework-native unit tests for handler code (.NET isolated worker model, Node.js v4, Python v2). Covers HTTP, queue, and timer trigger testing, admin-endpoint invocation for non-HTTP triggers, and binding verification via local.settings.json. Use when testing Azure Functions before deployment, reproducing trigger behaviour without live Azure services, or gating function handler logic in CI.
74
93%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
Azure Functions Core Tools v4 (func.exe) provides a local runtime that
mirrors the Functions host on Azure. Per
learn.microsoft.com/azure/azure-functions/functions-run-local,
func start starts all triggers in the project directory and outputs the
URL of every HTTP-triggered function. Azurite emulates Blob, Queue, and
Table Storage locally so queue and timer triggers can be exercised without
a live storage account.
Nearest neighbours and how this skill differs:
aws-sam-local-testing wraps SAM Local for Lambda/API Gateway.
This skill is Azure-only and covers func start, Azurite, the .NET
isolated worker model, and admin-endpoint invocation.lambda-test-tools-net covers the .NET Lambda test runner. This
skill covers the .NET isolated worker model (Microsoft.Azure.Functions.Worker).serverless-integration-test-builder builds multi-function integration
harnesses. This skill covers the per-function local invocation workflow.func --version shows 4.x) and Azurite, then
scaffold with func init and add triggers with func new - commands in
references/local-setup.md.AzureWebJobsStorage to UseDevelopmentStorage=true in
local.settings.json so queue and timer triggers route to Azurite; keep
the file git-ignored.func start from the project root and note the
printed HTTP trigger URLs.curl; fire non-HTTP (queue/timer) triggers
through the /admin/functions/<name> endpoint - see
references/triggering-functions.md.dotnet test / pytest / npm test into CI
using the workflow in references/triggering-functions.md.local.settings.json, Azurite, and func start:
references/local-setup.md.A .NET isolated function OrderProcessor is triggered by the orders
queue. To gate it locally before deploy:
func init OrderApp --worker-runtime dotnet-isolated, then
func new --template "Azure Queue Storage Trigger" --name OrderProcessor.
In local.settings.json, set
"AzureWebJobsStorage": "UseDevelopmentStorage=true".
Run azurite --silent --location ./azurite-data in one shell and
func start in another.
Fire the trigger through the admin endpoint:
curl --request POST -H "Content-Type: application/json" \
--data '{"input":"{\"orderId\":42}"}' \
http://localhost:7071/admin/functions/OrderProcessorThe host returns HTTP 202 (Accepted) and the function logs the processed order.
Unit-test OrderProcessor.Run with a mocked FunctionContext (xUnit),
asserting the parsed order id - no host required.
Result: queue-trigger wiring is verified against Azurite and handler logic is gated in CI, with no live Azure Storage account.
| Anti-pattern | Why it fails | Fix |
|---|---|---|
| Skip Azurite for queue/timer triggers | Queue and storage triggers require AzureWebJobsStorage; without it func start errors | Start Azurite and set "AzureWebJobsStorage": "UseDevelopmentStorage=true" in local.settings.json |
| Use in-process model for new projects | Support for in-process model ends 2026-11-10 per learn.microsoft.com/azure/azure-functions/dotnet-isolated-in-process-differences | Use --worker-runtime dotnet-isolated |
| Hard-code connection strings in code | Secrets leak to source control | Use local.settings.json Values array; it is git-ignored by default |
Call admin endpoint without Content-Type: application/json | Host rejects the request | Always include Content-Type: application/json header and {"input":"..."} body |
Commit local.settings.json | Contains secrets | Verify .gitignore excludes it; use func settings to sync with Azure app settings |
Use func host start for Core Tools v4 | Command removed in v4; it was v1.x syntax per Core Tools docs | Use func start |
func start. Test with connection strings locally; verify RBAC
in a staging environment.cold-start-budget-reference.func start:
learn.microsoft.com/azure/azure-functions/functions-run-localaws-sam-local-testing,
lambda-test-tools-net,
cold-start-budget-reference,
netlify-functions-tests,
vercel-edge-runtime-testing,
serverless-integration-test-builder