[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-76340":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":24,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":30,"readmeContent":31,"aiSummary":32,"trendingCount":16,"starSnapshotCount":16,"syncStatus":14,"lastSyncTime":33,"discoverSource":34},76340,"testo","ozontech\u002Ftesto","ozontech","Modular, zero-dependency testing framework for Go. Featuring plugins, suites, parallel tests and much more!","",null,"Go",126,4,2,1,0,3,36,9,2.1,"Apache License 2.0",false,"main",true,[26,27,28,29,5],"framework","go","plugins","testing","2026-06-12 02:03:41","![Testo banner showing its chef gopher macost](.\u002Fbanner.svg)\n\n# Testo\n\n[![Go Reference](https:\u002F\u002Fpkg.go.dev\u002Fbadge\u002Fgithub.com\u002Fozontech\u002Ftesto.svg)](https:\u002F\u002Fpkg.go.dev\u002Fgithub.com\u002Fozontech\u002Ftesto)\n[![Go Report Card](https:\u002F\u002Fgoreportcard.com\u002Fbadge\u002Fgithub.com\u002Fozontech\u002Ftesto)](https:\u002F\u002Fgoreportcard.com\u002Freport\u002Fgithub.com\u002Fozontech\u002Ftesto)\n[![Code Coverage](https:\u002F\u002Fgithub.com\u002Fozontech\u002Ftesto\u002Fraw\u002Fgh-pages\u002Fcoverage.svg?raw=true)](https:\u002F\u002Fozontech.github.io\u002Ftesto\u002Fcoverage.html)\n[![Quality Assurance](https:\u002F\u002Fgithub.com\u002Fozontech\u002Ftesto\u002Factions\u002Fworkflows\u002Fqa.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fozontech\u002Ftesto\u002Factions\u002Fworkflows\u002Fqa.yml)\n\nTesto is a modular testing framework for Go built on top of `testing.T`.\nIt is focused on suite-based tests and has an extensive plugin system.\n\n> Testo (\u002Ftɛstɒ\u002F) is a play on words \"test\" and \"тесто\", meaning \"dough\".\n> Just like you can cook anything from dough, you can test anything with Testo!\n\nAdd some flavor to your tests with\n[toppings - a collection of small, miscellaneous plugins for Testo framework.](https:\u002F\u002Fgithub.com\u002Fozontech\u002Ftesto-toppings)\n\n## Features\n\n- [Plugins](.\u002Fexamples\u002F04_plugins\u002Fmain_test.go) - adapt your tests to any scenario with features you need.\n- [Parametrized tests](.\u002Fexamples\u002F03_parametrized\u002Fmain_test.go) - describe a test once, repeat it with different parameters.\n- [Parallel tests](.\u002Fexamples\u002F05_parallel\u002Fmain_test.go) - make your tests faster by running them all at once.\n- [Lifecycle hooks](.\u002Fexamples\u002F02_hooks\u002Fmain_test.go) - before and after any suite, test & sub-test.\n- [Test annotations](.\u002Fexamples\u002F07_annotations\u002Fmain_test.go) - attach static options to any test.\n- [Informative errors and traces](.\u002Fexamples\u002F06_errors\u002Fmain_test.go) - no need to guess what went wrong.\n- Sub-tests - support for nested tests.\n- Test reflection - deeply inspect test's meta-information.\n- Caching - key-value storage persistent between test runs.\n\n## Why Testo\n\nAt Ozon, Testo powers thousands of end-to-end tests daily in production.\n\nWith plugins, it is flexible enough to adapt to diverse requirements,\nwithout leaving the Go ecosystem - just a layer over `testing.T`.\n\nIf your needs are outgrowing standard `testing` package, Testo is a great choice.\n\n## Quick Start\n\n```bash\ngo get github.com\u002Fozontech\u002Ftesto\n```\n\nYour first test with Testo:\n\n```go\n\u002F\u002F file: main_test.go\npackage main\n\nimport (\n    \"testing\"\n\n    \"github.com\u002Fozontech\u002Ftesto\"\n)\n\n\u002F\u002F A special construct that describes what plugins to use.\n\u002F\u002F Here we use the base T without plugins.\ntype T struct { *testo.T }\n\ntype Suite struct{ testo.Suite[T] }\n\nfunc (Suite) TestHelloWorld(t T) {\n    t.Log(\"hello from testo!\")\n}\n\nfunc Test(t *testing.T) {\n    testo.RunSuite(t, new(Suite))\n}\n```\n\nAnd run it with `go test` as usual:\n\n```bash\ngo test .\n```\n\nSee also [VS Code extension for Testo](#vs-code-extension).\n\n### Next steps\n\n- Take [a guided tour of Testo](.\u002Fdocs\u002Ftutorial.md) by making simple plugins and running the tests using various features.\n- See [test examples](.\u002Fexamples).\n- Learn [how to use various Testo features](.\u002Fdocs\u002Fhow-to.md).\n- Read a [brief description and technical overview](.\u002Fdocs\u002Ftechnical-overview.md) of Testo.\n- View [API documentation](https:\u002F\u002Fpkg.go.dev\u002Fgithub.com\u002Fozontech\u002Ftesto).\n\n## Plugins\n\nTesto features a powerful plugin system.\n\nPlugins can:\n\n- Provide `BeforeAll`\u002F`AfterAll`, `BeforeEach`\u002F`AfterEach` & `BeforeSubEach`\u002F`AfterSubEach` hooks.\n- Plan tests for execution - filter, duplicate & reorder.\n- Override built-in `T` methods, such as `Log`, `Error` and _etc._\n- Extend `T` by adding new methods.\n- Allow users to configure their behavior through options.\n- Communicate with other plugins.\n- Add command line flags for `go test` command.\n\nExamples:\n\n- [Testo Allure Plugin](https:\u002F\u002Fgithub.com\u002Fozontech\u002Ftesto-allure) - enhance your tests with automatically generated [Allure Reports](https:\u002F\u002Fallurereport.org\u002F).\n- [Testo Rerun Plugin](https:\u002F\u002Fgithub.com\u002Fozontech\u002Ftesto-toppings\u002Ftree\u002Fmain\u002Frerun) - adds `--last-failed`-like behaviour from Pytest to Testo. Makes it possible to rerun only failed tests.\n- [Testo XFail Plugin](https:\u002F\u002Fgithub.com\u002Fozontech\u002Ftesto-toppings\u002Ftree\u002Fmain\u002Fxfail) - adds `t.XFail()` method to mark a test as \"expected to fail\".\n- [Testo Parallel Plugin](https:\u002F\u002Fgithub.com\u002Fozontech\u002Ftesto-toppings\u002Ftree\u002Fmain\u002Fparallel) - marks all tests as parallel by default.\n\n## VS Code Extension\n\nTesto has its own [VS Code extension](.\u002Fvscode-extension).\n\nMakes it easier to run and debug individual suite tests.\n\n![VSCode extension screenshot showing codelens buttons for running and debugging a test](.\u002Fvscode-extension\u002Fexample.png)\n\n## Minimum supported Go version\n\nTesto guarantees to support at least **3 latest major** [Go releases](https:\u002F\u002Fgo.dev\u002Fdoc\u002Fdevel\u002Frelease).\n\nCurrently, minimum supported Go version is **1.24**\n\n## Contributing\n\nContributions are welcome!\n\nSee [contributing guidelines](.\u002FCONTRIBUTING.md).\n\n## License\n\nThis project is released under the [Apache-2.0 license](.\u002FLICENSE).\n\n---\n\n> [!TIP]\n> If you find Testo useful, [consider giving this repository a star](https:\u002F\u002Fgithub.com\u002Fozontech\u002Ftesto) to help it reach more people.\n> Thank you!\n","Testo 是一个为 Go 语言设计的模块化测试框架，支持插件、测试套件及并行测试等多种功能。它基于 `testing.T` 构建，通过丰富的插件系统和参数化测试能力，使开发者能够根据具体需求灵活定制测试场景。此外，Testo 还提供了生命周期钩子、测试注解以及详细的错误追踪等特性，增强了测试代码的可读性和维护性。适用于需要超出标准 Go 测试包功能的企业级应用或大型项目，在保证高效执行的同时保持了良好的扩展性和易用性。Ozon 公司内部已将其广泛应用于每日数千次端到端测试中。","2026-06-11 03:54:56","CREATED_QUERY"]