from unittest import mock import pytest from behave_django.runner import SimpleTestRunner from behave.runner import Context, Runner from django.test.testcases import TestCase from .util import DjangoSetupMixin class TestSimpleTestCase(DjangoSetupMixin): @mock.patch('behave_django.management.commands.behave.behave_main', return_value=0) # noqa @mock.patch('behave_django.management.commands.behave.SimpleTestRunner') # noqa def test_use_simple_test_runner(self, mock_simple_test_runner, mock_behave_main): self.run_management_command('behave', simple=True) mock_behave_main.assert_called_once_with(args=[]) mock_simple_test_runner.assert_called_once_with() def test_simple_test_runner_uses_simple_testcase(self): runner = mock.MagicMock() context = Context(runner) SimpleTestRunner().setup_testclass(context) assert isinstance(context.test, TestCase) def test_simple_testcase_fails_when_accessing_base_url(self): runner = Runner(mock.MagicMock()) runner.context = Context(runner) SimpleTestRunner().patch_context(runner.context) SimpleTestRunner().setup_testclass(runner.context) with pytest.raises(RuntimeError): assert runner.context.base_url == 'should raise an exception!' def test_simple_testcase_fails_when_calling_get_url(self): runner = Runner(mock.MagicMock()) runner.context = Context(runner) SimpleTestRunner().patch_context(runner.context) SimpleTestRunner().setup_testclass(runner.context) with pytest.raises(RuntimeError): runner.context.get_url()