{"id":16450935,"url":"https://github.com/fjarri/jute.jl","last_synced_at":"2026-02-28T13:33:33.859Z","repository":{"id":55417911,"uuid":"98083737","full_name":"fjarri/Jute.jl","owner":"fjarri","description":"A Py.Test-like testing framework for Julia","archived":false,"fork":false,"pushed_at":"2021-01-01T06:33:06.000Z","size":751,"stargazers_count":13,"open_issues_count":18,"forks_count":7,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-17T21:45:16.104Z","etag":null,"topics":["julia","test-framework"],"latest_commit_sha":null,"homepage":"http://publicfields.net/Jute.jl/","language":"Julia","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fjarri.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-07-23T08:10:15.000Z","updated_at":"2023-07-25T14:10:25.000Z","dependencies_parsed_at":"2022-08-14T23:50:51.570Z","dependency_job_id":null,"html_url":"https://github.com/fjarri/Jute.jl","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fjarri%2FJute.jl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fjarri%2FJute.jl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fjarri%2FJute.jl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fjarri%2FJute.jl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fjarri","download_url":"https://codeload.github.com/fjarri/Jute.jl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244745641,"owners_count":20503043,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["julia","test-framework"],"created_at":"2024-10-11T10:06:30.572Z","updated_at":"2026-02-28T13:33:33.811Z","avatar_url":"https://github.com/fjarri.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Jute, a Py.Test-inspired testing framework\n\nMaster branch: [![Travis build status](https://travis-ci.org/fjarri/Jute.jl.svg?branch=master)](https://travis-ci.org/fjarri/Jute.jl) [![Appveyor build status](https://ci.appveyor.com/api/projects/status/3k77mqb4549cwcjg?svg=true)](https://ci.appveyor.com/project/fjarri/jute-jl) [![Coverage Status](https://codecov.io/gh/fjarri/Jute.jl/branch/master/graph/badge.svg)](https://codecov.io/gh/fjarri/Jute.jl)\n\nAs opposed to [`Test`](http://docs.julialang.org/en/latest/stdlib/Test/) which executes the tests as it compiles the source files, `Jute` collects the testcases first.\nThis makes it possible to implement many advanced features, such as testcase filtering, testcase parametrization, fixtures with different setup/teardown strategies, and others.\nAs a bonus, you do not need to manually include the files with tests, since they are picked up automatically.\nOn the other hand, this approach leads to more execution time overhead, both per-test and global.\n\nA compromise between the two approaches is [`PyTest.jl`](https://github.com/pdobacz/PyTest.jl) which extends `Test` to add more advanced fixture functionality.\n\nA brief usage example:\n```\nusing Jute\n\n# constant fixture - any iterable\nfx1 = 1:3\n\n# global fixture - the setup/teardown function is run once\n# for every produced value\nfx2 = @global_fixture for x in fx1\n    # the optional second argument defines a custom label for the value\n    @produce x \"value $x\"\nend\n\n# local fixture - the setup/teardown function is run for each testcase\n# and each value produced by `fx2`\nfx3 = @local_fixture for x in fx2\n    @produce (x + 1)\nend\n\n# testcase - will be picked up automatically\n# and run for all the combinations of fixture values\n@testcase \"tc\" for x in fx1, y in fx2, z in fx3\n    @test x + y == y + x\n    @test x + y + z == z + y + x\nend\n\nruntests()\n```\n\nWhen executed, it outputs:\n```\nCollecting testcases...\nUsing 1 out of 1 testcase definitions...\n================================================================================\nPlatform: [...], Julia [...], Jute [...]\n--------------------------------------------------------------------------------\n......................................................\n--------------------------------------------------------------------------------\n54 tests passed, 0 failed, 0 errored in [...] s (total test time [...] s)\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffjarri%2Fjute.jl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffjarri%2Fjute.jl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffjarri%2Fjute.jl/lists"}