diff --git a/scripts/tests/README.md b/scripts/tests/README.md index 430a155e0..18f380580 100644 --- a/scripts/tests/README.md +++ b/scripts/tests/README.md @@ -24,38 +24,50 @@ so prior to using this script make sure to launch the dev containers. You can use a different DB backend by defining `SUPERSET__SQLALCHEMY_DATABASE_URI` env var. +This script will not install any dependencies for you, so you must be on an already set virtualenv + ## Use: +To show all supported switches: +```$bash +scripts/tests/run.sh --help +``` + From the superset repo root directory: +- Example run all tests: +```$bash +scripts/tests/run.sh +``` + - Example run a single test module: ```$bash -scripts/tests/run.sh tests.charts.api_tests +scripts/tests/run.sh --module tests/charts/api_tests.py ``` - Example run a single test: ```$bash -scripts/tests/run.sh tests.charts.api_tests:ChartApiTests.test_get_charts +scripts/tests/run.sh --module tests/charts/api_tests.py::TestChartApi::test_get_charts ``` - Example run a single test, without any init procedures. Init procedures include: resetting test database, db upgrade, superset init, loading example data. If your tests are idempotent, after the first run, subsequent runs are really fast ```$bash -scripts/tests/run.sh tests.charts.api_tests:ChartApiTests.test_get_charts --no-init +scripts/tests/run.sh --module tests/charts/api_tests.py::TestChartApi::test_get_charts --no-init ``` - Example for not recreating the test DB (will still run all the tests init procedures) ```$bash -scripts/tests/run.sh tests.charts.api_tests:ChartApiTests.test_get_charts --no-reset-db +scripts/tests/run.sh --module tests/charts/api_tests.py::TestChartApi::test_get_charts --no-reset-db ``` - Example for not running tests just initialize the test DB (drop/create, upgrade and load examples) ```$bash -scripts/tests/run.sh . --no-tests +scripts/tests/run.sh --no-tests ``` - Example for just resetting the tests DB ```$bash -scripts/tests/run.sh . --reset-db +scripts/tests/run.sh --reset-db --no-tests ``` diff --git a/scripts/tests/run.sh b/scripts/tests/run.sh index aeffeb0d2..98206f458 100755 --- a/scripts/tests/run.sh +++ b/scripts/tests/run.sh @@ -59,19 +59,6 @@ function test_init() { pytest -s tests/load_examples_test.py } - -if [[ "$#" -eq "0" ]] -then - echo "No argument suplied" - echo ------------------------ - echo use: - echo "run.sh [options]" - echo "[options]:" - echo "--no-init: Dont restart docker and no db migrations, superset init and test data" - echo "--no-reset-db: Recreates test database (DROP, CREATE)" - exit 1 -fi - # # Init global vars # @@ -83,14 +70,20 @@ export SUPERSET_CONFIG=${SUPERSET_CONFIG:-tests.superset_test_config} RUN_INIT=1 RUN_RESET_DB=1 RUN_TESTS=1 -TEST_MODULE="${1}" - -# Shift to pass the first cmd parameter for the test module -shift 1 +TEST_MODULE="tests" PARAMS="" while (( "$#" )); do case "$1" in + --help) + echo Switches: + echo --no-init : Will not, reset the test DB, superset init and load examples + echo --no-reset-db: Will not reset the test DB + echo --no-tests: Will not run any test, by default reset the DB, superset init and load_examples + echo --reset-db: Just resets the test DB, will not run any test + echo --module: Run a specific test module: --module tests/charts/api_tests.py for example + exit 0 + ;; --no-init) RUN_INIT=0 RUN_RESET_DB=0 @@ -109,6 +102,10 @@ while (( "$#" )); do RUN_INIT=0 shift 1 ;; + --module) + TEST_MODULE=$2 + shift 2 + ;; --) # end argument parsing shift break @@ -145,5 +142,5 @@ fi if [ $RUN_TESTS -eq 1 ] then - pytest -s --ignore=load_examples_test "${TEST_MODULE}" + pytest -x -s --ignore=load_examples_test "${TEST_MODULE}" fi