mirror of
https://github.com/zhigang1992/graphql-engine.git
synced 2026-05-09 06:38:26 +08:00
At the moment we can...
...run tests in isolation, generating coverage report:
$ dev.sh test
You can pass args to pytest as well. e.g. to run a specific test:
$ dev.sh test -k "test_jsonb_has_all"
Launch a postgres container with useful dev defaults, with PostGIS,
cleaning up afterwards:
$ dev.sh postgres
Build and launch graphql-engine in dev mode, connecting with a
`postgres` launched above
$ dev.sh graphql-engine
1.4 KiB
1.4 KiB
Running tests
The easiest way to run the test suite is to do:
$ scripts/dev.sh test
This should install python dependencies if required, and run in isolation.
Tests Structure
-
Tests are grouped as test classes in test modules (names starting with
test_) -
The configuration files (if needed) for the tests in a class are usually kept in one folder.
- The folder name is usually either the
dirvariable or thedir()function
- The folder name is usually either the
-
Some tests (like in
test_graphql_queries.py) requires a setup and teardown per class.- Here we are extending the
DefaultTestSelectQueriesclass. - This class defines a fixture which will run the configurations in
setup.yamlandteardown.yamlonce per class - Extending test class should define a function name
dir(), which returns the configuration folder
- Here we are extending the
-
For mutation tests (like in
test_graphql_mutations.py)- We need a
schema_setupandschema_teardownper class - And
values_setupandvalues_teardownper test - Doing schema setup and teardown per test is expensive.
- We are extending the
DefaultTestMutationsclass for this. - This class defines a fixture which will run the configuration in
setup.yamlandteardown.yamlonce per class. - Another fixture defined in this class runs the configuration in
values_setup.yamlandvalues_teardown.yamlonce per class.
- We need a