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
Install Azure Functions Core Tools v4 and Azurite, scaffold the app, and start
the local host. Companion to the azure-functions-tests skill.
# macOS
brew tap azure/functions
brew install azure-functions-core-tools@4
# Ubuntu/Debian (see full APT steps at learn.microsoft.com/azure/azure-functions/functions-run-local#install-the-azure-functions-core-tools)
sudo apt-get install azure-functions-core-tools-4
# Windows: download the MSI from
# https://go.microsoft.com/fwlink/?linkid=2174087 (64-bit) per the Core Tools docsVerify:
func --version # must be 4.xInstall Azurite via npm, per learn.microsoft.com/azure/storage/common/storage-install-azurite:
npm install -g azurite# .NET isolated worker model (recommended; in-process support ends 2026-11-10
# per learn.microsoft.com/azure/azure-functions/dotnet-isolated-in-process-differences)
func init MyApp --worker-runtime dotnet-isolated
# Node.js (v4 programming model)
func init MyApp --worker-runtime javascript --model V4
# Python (v2 programming model)
func init MyApp --worker-runtime python --model V2
# Add a trigger template
func new --template "Http Trigger" --name HttpExample
func new --template "Azure Queue Storage Trigger" --name QueueExample
func new --template "Timer trigger" --name TimerExamplePer
learn.microsoft.com/azure/azure-functions/functions-develop-local,
local.settings.json holds app settings used only when running locally.
Set AzureWebJobsStorage to UseDevelopmentStorage=true to route storage
triggers to Azurite:
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
"AzureWebJobsStorage": "UseDevelopmentStorage=true"
}
}Never commit local.settings.json to source control; it may contain
connection strings.
Azurite emulates Blob (port 10000), Queue (port 10001), and Table (port 10002)
per
learn.microsoft.com/azure/storage/common/storage-install-azurite.
Start it before func start:
azurite --silent --location ./azurite-dataFor Docker:
docker run -p 10000:10000 -p 10001:10001 -p 10002:10002 \
mcr.microsoft.com/azure-storage/azuriteFrom the project root, per learn.microsoft.com/azure/azure-functions/functions-run-local#start-the-functions-runtime:
func startOutput includes HTTP trigger URLs, e.g.:
Http Function HttpExample: http://localhost:7071/api/HttpExampleBy default, HTTP authorization is not enforced locally (all requests are
treated as authLevel = "anonymous"). Pass --enableAuth to require
authorization during local testing.