def test_setting_options_by_config(run_tests): with Patcher() as patcher: patcher.fs.add_real_file(DEFAULT_SCHEMA_PATH) patcher.fs.add_real_file(DEFAULT_CONFIG_PATH) patcher.fs.create_file( "config.json", contents=""" {"delta_iterations": 5, "processes": 2, "outputs": ["xml", "remote"], "filter": "MockCase", "run_name": "some name", "resources": "query"} """) sys.argv = ["rotest", "--config", "config.json"] main() config = AttrDict(delta_iterations=5, processes=2, paths=(".",), config_path="config.json", outputs=["xml", "remote"], filter="MockCase", run_name="some name", resources="query", debug=False, fail_fast=False, list=False, save_state=False, skip_init=False) run_tests.assert_called_once_with(config=config, test=mock.ANY)
def test_setting_options_by_cli(run_tests): with Patcher() as patcher: patcher.fs.add_real_file(DEFAULT_SCHEMA_PATH) patcher.fs.add_real_file(DEFAULT_CONFIG_PATH) patcher.fs.create_file( "config.json", contents=""" {"delta_iterations": 5, "processes": 2, "outputs": ["xml", "remote"], "filter": "some filter", "run_name": "some name", "resources": "query"} """) sys.argv = ["rotest", "-c", "config.json", "-d", "4", "-p", "1", "-o", "pretty,full", "-f", "MockCase", "-n", "other name", "-r", "other query", "-D", "-F", "-l", "-s", "-S"] main() config = AttrDict(delta_iterations=4, processes=1, paths=(".",), config_path="config.json", outputs=["pretty", "full"], filter="MockCase", run_name="other name", resources="other query", debug=True, fail_fast=True, list=True, save_state=True, skip_init=True) run_tests.assert_called_once_with(config=config, test=mock.ANY)
def test_discarding_nothing_no_filter(capsys): class Case1(TestCase): def test_something(self): pass class Case2(TestCase): def test_something(self): pass class MockSuite(TestSuite): components = [Case1, Case2] with Patcher() as patcher: patcher.fs.add_real_file(DEFAULT_CONFIG_PATH) patcher.fs.add_real_file(DEFAULT_SCHEMA_PATH) patcher.fs.create_file("some_test.py") with mock.patch("rotest.cli.client.discover_tests_under_paths", return_value={MockSuite}): sys.argv = ["rotest", "some_test.py", "--list"] main() out, _ = capsys.readouterr() assert "Case1.test_something" in out assert "Case2.test_something" in out
def test_discarding_some_tests_by_tag(capsys): class Case1(TestCase): TAGS = ["HELLO"] def test_something(self): pass class Case2(TestCase): TAGS = ["WORLD"] def test_something(self): pass with Patcher() as patcher: patcher.fs.add_real_file(DEFAULT_CONFIG_PATH) patcher.fs.add_real_file(DEFAULT_SCHEMA_PATH) patcher.fs.create_file("some_test.py") with mock.patch("rotest.cli.client.discover_tests_under_paths", return_value={Case1, Case2}): sys.argv = ["rotest", "some_test.py", "--filter", "WORLD", "--list"] main() out, _ = capsys.readouterr() assert "Case1.test_something" not in out assert "Case2.test_something" in out
def test_using_default_port(resource_manager, capsys): sys.argv = ["rotest", "server"] main() resource_manager.assert_called_once_with(port=7777) out, _ = capsys.readouterr() assert "Running in attached mode" in out
def test_ordering_tests(capsys): class Case1(TestCase): TAGS = ["2", "3"] def test_something(self): pass class Case2(TestCase): TAGS = ["1"] def test_something(self): pass class Case3(TestCase): TAGS = ["1", "2"] def test_something(self): pass with Patcher() as patcher: patcher.fs.add_real_file(DEFAULT_CONFIG_PATH) patcher.fs.add_real_file(DEFAULT_SCHEMA_PATH) patcher.fs.create_file("some_test.py") with mock.patch("rotest.cli.client.discover_tests_under_paths", return_value=[Case1, Case2, Case3]): sys.argv = ["rotest", "some_test.py", "--order", "1,2", "--list"] main() out, _ = capsys.readouterr() assert out.find("Case3") < out.find("Case2") < out.find("Case1")
def test_raising_on_windows_when_user_tries_daemon_mode(resource_manager): sys.argv = ["rotest", "server", "--daemon"] with pytest.raises(RuntimeError, match="Cannot run as daemon on Windows"): main() resource_manager.assert_not_called()
def test_not_running_django_server(popen, capsys): sys.argv = ["rotest", "server", "--no-django"] main() popen.assert_not_called() out, _ = capsys.readouterr() assert "Running the Django server as well" not in out
def test_using_daemon_mode(resource_manager, daemon_context, capsys): sys.argv = ["rotest", "server", "--daemon"] main() resource_manager.assert_called_once_with(port=7777) daemon_context.assert_called_once() out, _ = capsys.readouterr() assert "Running in detached mode (as daemon)" in out
def test_running_django_server(popen, capsys): sys.argv = ["rotest", "server"] main() popen.assert_called_once_with(["django-admin", "runserver", "0.0.0.0:8000"]) out, _ = capsys.readouterr() assert "Running the Django server as well" in out
def test_finding_no_test(capsys): with Patcher() as patcher: patcher.fs.add_real_file(DEFAULT_CONFIG_PATH) patcher.fs.add_real_file(DEFAULT_SCHEMA_PATH) patcher.fs.create_file("some_test.py") sys.argv = ["rotest", "some_test.py"] with pytest.raises(SystemExit): main() out, _ = capsys.readouterr() assert "No test was found" in out
def test_listing_tests(capsys): class Case(TestCase): def test_something(self): pass with Patcher() as patcher: patcher.fs.add_real_file(DEFAULT_CONFIG_PATH) patcher.fs.add_real_file(DEFAULT_SCHEMA_PATH) patcher.fs.create_file("some_test.py") with mock.patch("rotest.cli.client.discover_tests_under_paths", return_value={Case}): sys.argv = ["rotest", "some_test.py", "--list"] main() out, _ = capsys.readouterr() assert "Case.test_something" in out
def test_finding_tests_in_current_directory(discover, run_tests): sys.argv = ["rotest"] main() discover.assert_called_once_with((".", )) run_tests.assert_called_once_with(test=mock.ANY, config_path=DEFAULT_CONFIG_PATH, debug=False, delta_iterations=0, fail_fast=False, filter=None, list=False, outputs={"excel", "pretty"}, processes=None, resources=None, run_name=None, save_state=False, skip_init=False)
def test_finding_tests_in_current_module(discover, run_tests): sys.argv = ["python", "script.py"] main() discover.assert_called_once_with(("script.py",)) run_tests.assert_called()
def test_giving_invalid_paths(): sys.argv = ["rotest", "some_test.py"] with pytest.raises(OSError): main()
def test_finding_tests_in_current_directory(discover, run_tests): sys.argv = ["rotest"] main() discover.assert_called_once_with((".",)) run_tests.assert_called()