testify

The essential Go toolkit for assertions, mocks, and structured test suites.

Library
Go
vv1.12.0
26,163stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
68/100Good
Development Activity64
Maintenance40
Community68
Maturity60
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
84/100Excellent
Architecture85
Code Quality88
Innovation80
Learning Curve88

Testify is the most widely used testing toolkit for Go, providing a comprehensive set of assertion helpers, a mocking framework, and a structured test-suite system that plays nicely with the standard testing package. Rather than replacing Go’s built-in test runner, it layers ergonomic, readable APIs on top of it, cutting boilerplate from equality checks, error handling, and object mocking in day-to-day test code.

With hundreds of contributors and more than a decade of production use across the Go ecosystem, testify has become a near-default dependency in Go projects of every size, from small CLIs to large distributed systems, valued for its stability, minimal external surface, and tight integration with go test.

What You Get

  • assert package with 100+ assertion functions (Equal, Nil, Error, Contains, Len, and more) that print human-readable failure diffs
  • require package mirroring assert but calling t.FailNow() to halt the test immediately on failure
  • mock package for building mock objects with expectation-based call verification (On/Return/AssertExpectations)
  • suite package for grouping tests as struct methods with SetupTest/TearDownTest lifecycle hooks
  • A testifylint linter (via golangci-lint) that catches common assertion misuse

Common Use Cases

  • Asserting expected vs actual values in unit tests without hand-writing comparison and error-formatting code
  • Mocking external dependencies (HTTP clients, databases, third-party APIs) to isolate the unit under test
  • Structuring integration-style tests as a suite with shared setup/teardown across many related test methods
  • Enforcing fail-fast behavior on prerequisite checks via require so a broken precondition doesn’t cascade into confusing downstream failures

Under The Hood

Architecture Testify is organized as four largely independent packages that share a common internal core: assert (raw boolean-returning assertion functions plus a generated require-style companion), require (a codegen-generated mirror of assert that calls t.FailNow() on failure, built from require.go.tmpl via go:generate), mock (a Mock/Call/Arguments object model layered on testify/assert for value comparison and stretchr/objx for structured argument objects), and suite (a Suite struct plus lifecycle hooks like SetupTest/TearDownTest that suite.Run drives via reflection over Test* methods). Shared formatting and diffing logic lives in internal/difflib (a Python difflib port) and internal/spew (a vendored pretty-printer), so all four public packages produce consistent, readable failure output. Code generation (assertion_format.go.tmpl, require.go.tmpl, driven by the _codegen tool) keeps require and the formatted-assertion variants mechanically in sync with the hand-written comparison logic in assertion_compare.go and assertions.go.

Tech Stack The module targets Go 1.17+ with a minimal dependency footprint: github.com/stretchr/objx v0.5.3 (structured mock argument access) and gopkg.in/yaml.v3 v3.0.1 (YAML equality assertions). There is no build system beyond the standard go build/go generate toolchain — _codegen is a small internal Go program invoked via go:generate directives, and CI runs go test across supported Go versions. No external services, databases, or runtime dependencies are involved; it is a pure compile-time test-support library.

Code Quality Testify is thoroughly self-tested: 21 _test.go files across the repo, including assertions_test.go, mock_test.go, and suite_test.go, exercise the library’s own assertion, mocking, and suite-lifecycle behavior. Core files like assert/assertions.go (2,314 lines) and mock/mock.go (1,311 lines) are large but organized into clearly delimited, doc-commented functions, and generated files are explicitly marked with “Code generated with” headers per CONTRIBUTING.md, so hand-written and generated code stay unambiguous. Error handling favors explicit boolean returns and TestingT.Errorf/FailNow() calls over panics, consistent with idiomatic Go testing conventions; the project also ships MAINTAINERS.md and EMERITUS.md, signaling active ownership.

API Design Testify’s defining design choice is layering two near-identical APIs — assert (returns bool, continues the test) and require (calls t.FailNow(), halts the test) — over the same underlying comparisons, letting callers choose failure semantics per call site. Every function accepts a TestingT interface rather than a concrete *testing.T, keeping the library decoupled from the standard library. Getting started requires zero configuration: assert.Equal(t, want, got) works with a single import, and the mock.Mock embed-and-call pattern is idiomatic enough to be treated as a de facto standard by adjacent tools like mockery and testifylint. The main friction point is the size of the API surface (100+ assertion functions) and the deliberate v1 feature-freeze, which keeps the DX stable but leaves some rough edges (e.g. suite not supporting parallel tests) unresolved by design.

Used by 98 apps in this directory

Rust
64%
Apache 2.0

agentgateway

AI Development · Developer Tools

4,420

An open source AI-native proxy that secures, observes, and governs agent-to-LLM, agent-to-tool, and agent-to-agent communication through MCP, A2A, and unified LLM routing.

View details
88
Repo Health
82
Technical
72
Dependency
Built with
Rust64%
Go24%
Updated yesterday
Python
90%
Apache 2.0

Apache Airflow

Data Engineering

46,530

Define, schedule, and monitor complex data workflows as Python code — with a powerful UI, 80+ provider integrations, and battle-tested scalability across thousands of production deployments.

View details
96
Repo Health
89
Technical
66
Dependency
Built with
Python90%
Updated today
Go
60%
Apache 2.0

Apache Answer

Community

15,652

Open-source Q&A platform for communities, help centers, and knowledge bases with AI assistant and plugin extensibility

View details
85
Repo Health
78
Technical
69
Dependency
Built with
Go60%
TypeScript36%
Updated 2 days ago
Go
85%
Apache 2.0

Argo Workflows

Devops · Data Engineering

16,916

The most popular Kubernetes-native workflow engine for orchestrating containerized DAGs, ML pipelines, CI/CD, and parallel batch jobs at scale.

View details
96
Repo Health
90
Technical
70
Dependency
Built with
Go85%
TypeScript11%
Updated today
Go
86%
Apache 2.0

Authelia

Security · Authentication

28,626

OpenID Certified SSO and MFA portal for securing self-hosted web applications behind reverse proxies.

View details
91
Repo Health
81
Technical
77
Dependency
Built with
Go86%
TypeScript12%
Updated today
Python
54%
Other

authentik

Authentication · Security

24,980

The self-hosted Identity Provider that replaces Okta, Auth0, and Entra ID with a unified SSO platform supporting SAML, OAuth2/OIDC, LDAP, RADIUS, and WebAuthn.

View details
92
Repo Health
81
Technical
68
Dependency
Built with
Python54%
TypeScript33%
Updated today
Go
82%
AGPL 3.0

Beta9

Developer Tools · AI Development · Data Engineering

1,746

Run AI workloads at scale with a Pythonic serverless runtime that handles GPU inference, background jobs, and sandboxes with zero infrastructure overhead.

View details
85
Repo Health
78
Technical
69
Dependency
Built with
Go82%
Python17%
Updated today
Go
92%
AGPL 3.0

BillionMail

Marketing

15,424

Self-hosted email server and marketing platform that gives you unlimited sending, full deliverability control, and AI-assisted campaigns without monthly fees.

View details
59
Repo Health
74
Technical
73
Dependency
Built with
Go92%
Updated 2 months ago
Go
52%
MIT

Bytebase

Devops

14,396

An open-source database CI/CD and DevSecOps platform — schema migration review, GitOps-driven changes, data masking, and access control across MySQL, PostgreSQL, Oracle, Snowflake, MongoDB, and more.

View details
92
Repo Health
73
Technical
69
Dependency
Built with
Go52%
TypeScript39%
Updated today

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search