def test_chrome_proxy(self): self.obj.responses = [ ResponseEmul(200, '{"result" : {}}'), ResponseEmul(200, '{"result" : {"port": "port1", "host": "host1"}}'), ResponseEmul(200, ''), ResponseEmul(200, ''), # startup: startRecording ResponseEmul(200, ''), # shutdown: stopRecording ResponseEmul(200, 'regular jmx contents'), ResponseEmul(200, '{"result" : {"smartjmx": "unavailable"}}'), ResponseEmul(200, '{"result" : {"smartjmx": "available"}}'), ResponseEmul(200, 'only one string')] self.obj.engine.config.merge({ 'modules': { 'recorder': { 'token': '123'}}}) self.obj.settings = self.obj.engine.config.get('modules').get('recorder') self.sniff_log(self.obj.log) executor = SeleniumExecutor() executor.env = self.obj.engine.env self.obj.engine.provisioning.executors = [executor] self.obj.prepare() if is_linux(): self._check_linux() elif is_windows(): self._check_windows() else: # MacOS self._check_mac() self.obj.shutdown() self.obj.post_process()
class SeleniumTestCase(BZTestCase): def setUp(self): super(SeleniumTestCase, self).setUp() engine_obj = EngineEmul() paths = [__dir__() + "/../../bzt/10-base.json", local_paths_config()] engine_obj.configure( paths ) # FIXME: avoid using whole engine in particular module test! self.obj = SeleniumExecutor() self.obj.settings = engine_obj.config.get("modules").get("selenium") self.obj.settings.merge( {"virtual-display": { "width": 1024, "height": 768 }}) engine_obj.create_artifacts_dir(paths) self.obj.engine = engine_obj def configure(self, config): self.obj.engine.config.merge(config) self.obj.execution = self.obj.engine.config.get('execution') if isinstance(self.obj.execution, list): self.obj.execution = self.obj.execution[0] def tearDown(self): self.obj.free_virtual_display()
def test_resource_files_collection_remote_nose(self): obj = SeleniumExecutor() obj.engine = EngineEmul() obj.execution.merge({"scenario": {"script": __dir__() + "/../selenium/python/"}}) obj.settings.merge(obj.engine.config.get("modules").get("selenium")) self.assertEqual(len(obj.resource_files()), 1)
def test_selenium_startup_shutdown_java_folder(self): """ run tests from .java files :return: """ obj = SeleniumExecutor() obj.engine = EngineEmul() obj.engine.config.merge(yaml.load(open("tests/yaml/selenium_executor_java.yml").read())) obj.engine.config.merge({"provisioning": "local"}) obj.execution = obj.engine.config['execution'] obj.settings.merge(obj.engine.config.get("modules").get("selenium")) obj.prepare() obj.startup() while not obj.check(): time.sleep(1) obj.shutdown() prepared_files = os.listdir(obj.runner.working_dir) java_files = [file for file in prepared_files if file.endswith(".java")] class_files = [file for file in prepared_files if file.endswith(".class")] jars = [file for file in prepared_files if file.endswith(".jar")] self.assertEqual(2, len(java_files)) self.assertEqual(2, len(class_files)) self.assertEqual(1, len(jars)) self.assertTrue(os.path.exists(os.path.join(obj.runner.working_dir, "compiled.jar"))) self.assertTrue(os.path.exists(obj.runner.report_file))
def test_selenium_startup_shutdown_python_single(self): """ run tests from .py file :return: """ obj = SeleniumExecutor() obj.engine = EngineEmul() obj.engine.config = BetterDict() obj.engine.config.merge(yaml.load(open("tests/yaml/selenium_executor_python.yml").read())) obj.engine.config.merge({"provisioning": "local"}) obj.execution = obj.engine.config["execution"] obj.execution.merge({"scenario": {"script": ABS_PATH("/../../tests/selenium/python/test_blazemeter_fail.py")}}) obj.settings.merge(obj.engine.config.get("modules").get("selenium")) obj.prepare() obj.startup() while not obj.check(): time.sleep(1) obj.shutdown() prepared_files = os.listdir(obj.runner.working_dir) python_files = [file for file in prepared_files if file.endswith(".py")] self.assertEqual(1, len(python_files)) self.assertTrue(os.path.exists(obj.runner.settings.get("report-file")))
def test_chrome_proxy(self): self.obj.responses = [ ResponseEmul(200, '{"result" : {}}'), ResponseEmul(200, '{"result" : {"port": "port1", "host": "host1"}}'), ResponseEmul(200, ''), ResponseEmul(200, ''), # startup: startRecording ResponseEmul(200, ''), # shutdown: stopRecording ResponseEmul(200, '{"result" : "http://jmx_url"}'), ResponseEmul(200, 'regular jmx contents'), ResponseEmul(200, '{"result" : "http://smartjmx_url"}'), ResponseEmul(200, 'smartjmx content')] self.obj.engine.config.merge({ 'modules': { 'recorder': { 'token': '123'}}}) self.obj.settings = self.obj.engine.config.get('modules').get('recorder') self.sniff_log(self.obj.log) executor = SeleniumExecutor() executor.env = self.obj.engine.env self.obj.engine.provisioning.executors = [executor] self.obj.prepare() if is_linux(): self._check_linux() elif is_windows(): self._check_windows() else: # MacOS self._check_mac() self.obj.shutdown() self.obj.post_process()
def test_selenium_startup_shutdown_python_folder(self): """ run tests from .py files :return: """ obj = SeleniumExecutor() obj.engine = EngineEmul() obj.engine.config.merge({ 'execution': { 'scenario': {'script': __dir__() + '/../selenium/python/'}, 'executor': 'selenium' }, 'reporting': [{'module': 'junit-xml'}] }) obj.engine.config.merge({"provisioning": "local"}) obj.execution = obj.engine.config['execution'] obj.settings.merge(obj.engine.config.get("modules").get("selenium")) obj.prepare() obj.startup() while not obj.check(): time.sleep(1) obj.shutdown() prepared_files = os.listdir(obj.runner.working_dir) python_files = [fname for fname in prepared_files if fname.endswith(".py")] self.assertEqual(2, len(python_files)) self.assertTrue(os.path.exists(obj.runner.settings.get("report-file")))
def test_install_tools(self): """ check installation of selenium-server, junit :return: """ dummy_installation_path = os.path.abspath(__dir__() + "/../../build/tmp/selenium-taurus") base_link = "file://" + __dir__() + "/../data/" shutil.rmtree(os.path.dirname(dummy_installation_path), ignore_errors=True) selenium_server_link = SeleniumExecutor.SELENIUM_DOWNLOAD_LINK SeleniumExecutor.SELENIUM_DOWNLOAD_LINK = base_link + "selenium-server-standalone-2.46.0.jar" junit_link = SeleniumExecutor.JUNIT_DOWNLOAD_LINK SeleniumExecutor.JUNIT_DOWNLOAD_LINK = base_link + "junit-4.12.jar" self.assertFalse(os.path.exists(dummy_installation_path)) obj = SeleniumExecutor() obj.engine = EngineEmul() obj.settings.merge({"selenium-tools": { "junit": {"selenium-server": os.path.join(dummy_installation_path, "selenium-server.jar")}}}) obj.settings.merge({"selenium-tools": { "junit": {"path": os.path.join(dummy_installation_path, "tools", "junit", "junit.jar")}}}) obj.execution = BetterDict() obj.execution.merge({"scenario": {"script": os.path.abspath(__dir__() + "/../../tests/selenium/jar/")}}) obj.prepare() self.assertTrue(os.path.exists(os.path.join(dummy_installation_path, "selenium-server.jar"))) self.assertTrue(os.path.exists(os.path.join(dummy_installation_path, "tools", "junit", "junit.jar"))) SeleniumExecutor.SELENIUM_DOWNLOAD_LINK = selenium_server_link SeleniumExecutor.JUNIT_DOWNLOAD_LINK = junit_link
def test_selenium_startup_shutdown_jar_single(self): """ runt tests from single jar :return: """ obj = SeleniumExecutor() obj.engine = EngineEmul() obj.engine.config.merge(yaml.load(open("tests/yaml/selenium_executor_jar.yml").read())) obj.engine.config.merge({"provisioning": "local"}) obj.execution = obj.engine.config['execution'] obj.execution.merge( {"scenario": {"script": os.path.abspath(__dir__() + "/../../tests/selenium/jar/dummy.jar")}}) obj.settings.merge(obj.engine.config.get("modules").get("selenium")) obj.prepare() obj.startup() while not obj.check(): time.sleep(1) obj.shutdown() prepared_files = os.listdir(obj.runner.working_dir) java_files = [file for file in prepared_files if file.endswith(".java")] class_files = [file for file in prepared_files if file.endswith(".class")] jars = [file for file in prepared_files if file.endswith(".jar")] self.assertEqual(len(java_files), 0) self.assertEqual(len(class_files), 0) self.assertEqual(len(jars), 1) self.assertTrue(os.path.exists(obj.runner.report_file))
def test_remote_prov_requests(self): obj = SeleniumExecutor() obj.engine = EngineEmul() obj.execution.merge( {"scenario": { "requests": ["http://blazedemo.com"] }}) obj.resource_files()
def test_resource_files_collection_remote_nose(self): obj = SeleniumExecutor() obj.engine = EngineEmul() obj.execution.merge({"scenario": {"script": __dir__() + "/../selenium/python/"}}) obj.settings.merge(obj.engine.config.get("modules").get("selenium")) res_files = obj.resource_files() res_artifacts = os.listdir(os.path.join(obj.engine.artifacts_dir, res_files[0])) self.assertEqual(len(res_artifacts), 2)
def setUp(self): super(SeleniumTestCase, self).setUp() engine_obj = EngineEmul() paths = [__dir__() + "/../../../bzt/resources/base-config.yml", local_paths_config()] engine_obj.configure(paths) # FIXME: avoid using whole engine in particular module test! self.obj = SeleniumExecutor() self.obj.settings = engine_obj.config.get("modules").get("selenium") self.obj.settings.merge({"virtual-display": {"width": 1024, "height": 768}}) engine_obj.create_artifacts_dir(paths) self.obj.engine = engine_obj
def test_empty_scenario(self): """ Raise runtime error when no scenario provided :return: """ obj = SeleniumExecutor() obj.engine = EngineEmul() obj.engine.config.merge({ScenarioExecutor.EXEC: {"executor": "selenium"}}) obj.execution = obj.engine.config['execution'] self.assertRaises(ValueError, obj.prepare)
def test_resource_files_collection_remote_nose(self): obj = SeleniumExecutor() obj.engine = EngineEmul() obj.execution = BetterDict() obj.execution.merge({"scenario": {"script": __dir__() + "/../selenium/python/"}}) obj.settings.merge(obj.engine.config.get("modules").get("selenium")) res_files = obj.resource_files() res_artifacts = os.listdir(os.path.join(obj.engine.artifacts_dir, res_files[0])) self.assertEqual(len(res_artifacts), 2)
def test_selenium_prepare_python_folder(self): """ Check if scripts exist in working dir :return: """ obj = SeleniumExecutor() obj.engine = EngineEmul() obj.execution.merge({"scenario": {"script": __dir__() + "/../selenium/python/"}}) obj.prepare() python_scripts = os.listdir(obj.runner.working_dir) self.assertEqual(len(python_scripts), 2)
def test_remote_prov_requests(self): obj = SeleniumExecutor() obj.engine = EngineEmul() obj.execution.merge({ "scenario": { "requests": [ "http://blazedemo.com" ] } }) obj.resource_files()
def test_empty_scenario(self): """ Raise runtime error when no scenario provided :return: """ obj = SeleniumExecutor() obj.engine = EngineEmul() obj.engine.config = BetterDict() obj.engine.config.merge({"execution": {"executor": "selenium"}}) obj.execution = obj.engine.config["execution"] self.assertRaises(RuntimeError, obj.prepare)
def test_no_supported_files_to_test(self): """ Test RuntimeError raised when no files of known types were found. :return: """ obj = SeleniumExecutor() obj.engine = EngineEmul() obj.engine.config = BetterDict() obj.engine.config.merge( {"execution": {"executor": "selenium", "scenario": {"script": "tests/selenium/invalid/not_found"}}}) obj.execution = obj.engine.config['execution'] self.assertRaises(RuntimeError, obj.prepare)
def test_selenium_prepare_python_single(self): """ Check if script exists in working dir :return: """ obj = SeleniumExecutor() obj.engine = EngineEmul() obj.execution = BetterDict() obj.execution.merge({"scenario": {"script": ABS_PATH("/../../tests/selenium/python/test_blazemeter_fail.py")}}) obj.prepare() python_scripts = os.listdir(obj.runner.working_dir) self.assertEqual(len(python_scripts), 1)
def test_javac_fail(self): """ Test RuntimeError when compilation fails :return: """ obj = SeleniumExecutor() obj.engine = EngineEmul() obj.engine.config = BetterDict() obj.engine.config.merge( {"execution": {"executor": "selenium", "scenario": {"script": "tests/selenium/invalid/invalid.java"}}}) obj.execution = obj.engine.config['execution'] self.assertRaises(RuntimeError, obj.prepare)
def test_prepare_java_package(self): """ Check if scripts exist in working dir :return: """ obj = SeleniumExecutor() obj.engine = EngineEmul() obj.execution = BetterDict() obj.execution.merge( {"scenario": {"script": os.path.abspath(__dir__() + "/../../tests/selenium/java_package/")}}) obj.prepare() self.assertTrue(os.path.exists(os.path.join(obj.runner.working_dir, "compiled.jar")))
def test_prepare_jar_folder(self): """ Check if jars exist in working dir :return: """ obj = SeleniumExecutor() obj.engine = EngineEmul() obj.execution = BetterDict() obj.execution.merge({"scenario": {"script": os.path.abspath(__dir__() + "/../../tests/selenium/jar/")}}) obj.prepare() java_scripts = os.listdir(obj.runner.working_dir) self.assertEqual(len(java_scripts), 2)
def test_no_supported_files_to_test(self): """ Test RuntimeError raised when no files of known types were found. :return: """ obj = SeleniumExecutor() obj.engine = EngineEmul() obj.engine.config.merge({ScenarioExecutor.EXEC: { "executor": "selenium", "scenario": {"script": __dir__() + "/../selenium/invalid/not_found"} }}) obj.execution = obj.engine.config['execution'] self.assertRaises(ValueError, obj.prepare)
def test_resource_files_collection_remote_jar(self): obj = SeleniumExecutor() obj.engine = self.engine_obj obj.settings = self.selenium_config obj.engine.config.merge({'execution': {'scenario': {'script': 'tests/selenium/jar/'}, 'executor': 'selenium'}, 'reporting': [{'module': 'junit-xml'}]}) obj.engine.config.merge({"provisioning": "local"}) obj.execution = obj.engine.config['execution'] obj.settings.merge(obj.engine.config.get("modules").get("selenium")) res_files = obj.resource_files() res_artifacts = os.listdir(os.path.join(obj.engine.artifacts_dir, res_files)) self.assertEqual(len(res_artifacts), 2)
def test_prepare_java_single(self): """ Check if script exists in working dir :return: """ obj = SeleniumExecutor() obj.engine = self.engine_obj obj.settings = self.selenium_config obj.execution.merge({"scenario": {"script": ABS_PATH("/../../tests/selenium/java/TestBlazemeterFail.java")}}) obj.prepare() self.assertTrue(os.path.exists(os.path.join(obj.runner.working_dir, "TestBlazemeterFail.java"))) self.assertTrue(os.path.exists(os.path.join(obj.runner.working_dir, "TestBlazemeterFail.class"))) self.assertTrue(os.path.exists(os.path.join(obj.runner.working_dir, "compiled.jar")))
def test_javac_fail(self): """ Test RuntimeError when compilation fails :return: """ obj = SeleniumExecutor() obj.engine = self.engine_obj obj.settings = self.selenium_config obj.engine.config = BetterDict() obj.engine.config.merge( {"execution": {"executor": "selenium", "scenario": {"script": __dir__() + "/../selenium/invalid/invalid.java"}}}) obj.execution = obj.engine.config['execution'] self.assertRaises(RuntimeError, obj.prepare)
def test_javac_fail(self): """ Test RuntimeError when compilation fails :return: """ obj = SeleniumExecutor() obj.engine = self.engine_obj obj.settings = self.selenium_config obj.engine.config = BetterDict() obj.engine.config.merge( {ScenarioExecutor.EXEC: {"executor": "selenium", "scenario": {"script": __dir__() + "/../selenium/invalid/invalid.java"}}}) obj.execution = obj.engine.config['execution'] self.assertRaises(RuntimeError, obj.prepare)
def test_take_script_from_artifacts(self): "ensures that executor looks for script in artifacts-dir (for cloud/remote cases)" obj = SeleniumExecutor() obj.engine = EngineEmul() obj.engine.file_search_paths = [obj.engine.artifacts_dir] script_name = "BlazeDemo.java" test_script = __dir__() + "/../data/" + script_name artifacts_script = os.path.join(obj.engine.artifacts_dir, script_name) shutil.copy2(test_script, artifacts_script) obj.execution.merge({"scenario": { "script": script_name, }}) obj.prepare()
class SeleniumTestCase(BZTestCase): def setUp(self): super(SeleniumTestCase, self).setUp() self.engine_obj = EngineEmul() self.paths = [__dir__() + "/../../bzt/10-base.json", local_paths_config()] self.engine_obj.configure(self.paths) # FIXME: avoid using whole engine in particular module test! self.engine_obj.config.get("modules").get("selenium").merge({"virtual-display": {"width": 1024, "height": 768}}) self.selenium_config = self.engine_obj.config["modules"]["selenium"] self.engine_obj.create_artifacts_dir(self.paths) self.obj = SeleniumExecutor() self.obj.engine = self.engine_obj self.obj.settings = self.selenium_config def tearDown(self): self.obj.free_virtual_display()
def test_full(self): self.obj.api_delay = 1 self.obj.responses = [ ResponseEmul(200, '{"result" : {}}'), ResponseEmul( 200, '{"result" : {"port": "port1", "host": "host1", "username":"******", "password":"******"}}' ), ResponseEmul(200, ''), ResponseEmul(200, ''), # startup: startRecording ResponseEmul(200, ''), # shutdown: stopRecording ResponseEmul(200, '{"result" : "http://jmx_url"}'), ResponseEmul(200, 'regular jmx contents'), ResponseEmul(200, '{"result" : "http://smartjmx_url"}'), ResponseEmul(200, 'smartjmx content') ] self.obj.engine.config.merge( {'modules': { 'recorder': { 'token': '123' } }}) self.obj.settings = self.obj.engine.config.get('modules').get( 'recorder') executor = SeleniumExecutor() executor.env = self.obj.engine.env self.obj.engine.provisioning.executors = [executor] self.obj.prepare() self.assertEqual(self.obj.proxy_addr, 'user1:123@host1:port1') self.obj.startup() self.obj.shutdown() self.obj.post_process() with open(self.obj.engine.artifacts_dir + '/generated.smart.jmx') as fd: lines = fd.readlines() self.assertEqual(len(lines), 1) self.assertEqual(lines[0].strip(), 'smartjmx content') with open(self.obj.engine.artifacts_dir + '/generated.simple.jmx') as fd: lines = fd.readlines() self.assertEqual(len(lines), 1) self.assertEqual(lines[0].strip(), 'regular jmx contents')
class SeleniumTestCase(BZTestCase): def setUp(self): super(SeleniumTestCase, self).setUp() engine_obj = EngineEmul() paths = [ __dir__() + "/../../bzt/resources/base-config.yml", local_paths_config() ] engine_obj.configure( paths ) # FIXME: avoid using whole engine in particular module test! self.obj = SeleniumExecutor() self.obj.settings = engine_obj.config.get("modules").get("selenium") self.obj.settings.merge( {"virtual-display": { "width": 1024, "height": 768 }}) engine_obj.create_artifacts_dir(paths) self.obj.engine = engine_obj def configure(self, config): self.obj.engine.config.merge(config) self.obj.execution = self.obj.engine.config.get('execution') if isinstance(self.obj.execution, list): self.obj.execution = self.obj.execution[0] def tearDown(self): exc, _, _ = sys.exc_info() if exc: try: stdout_path = os.path.join(self.obj.engine.artifacts_dir, "selenium.out") if os.path.exists(stdout_path): stdout = open(stdout_path).read() logging.info('Selenium stdout: """\n%s\n"""', stdout) except BaseException: pass try: stdout_path = os.path.join(self.obj.engine.artifacts_dir, "selenium.err") if os.path.exists(stdout_path): stderr = open(stdout_path).read() logging.info('Selenium stderr: """\n%s\n"""', stderr) except BaseException: pass if isinstance(self.obj, SeleniumExecutor): self.obj.free_virtual_display()
def test_dont_copy_local_script_to_artifacts(self): "ensures that .java file is not copied into artifacts-dir" obj = SeleniumExecutor() obj.engine = EngineEmul() filename = "BlazeDemo.java" script_path = __dir__() + "/../data/" + filename obj.execution.merge({ "scenario": { "script": script_path, } }) obj.prepare() files = obj.resource_files() self.assertIn(script_path, files) artifacts_script = os.path.join(obj.engine.artifacts_dir, filename) self.assertFalse(os.path.exists(artifacts_script))
def test_junit_mirrors(self): dummy_installation_path = __dir__() + "/../../../build/tmp/selenium-taurus" shutil.rmtree(os.path.dirname(dummy_installation_path), ignore_errors=True) obj = SeleniumExecutor() objjm = JUnitJar(os.path.join(dummy_installation_path, "tools", "junit", "junit.jar"), obj.log, SeleniumExecutor.JUNIT_VERSION) objjm.install()
def setUp(self): super(TestJUnitTester, self).setUp() engine_obj = EngineEmul() paths = [local_paths_config()] engine_obj.configure(paths) # just download geckodriver & chromedriver with selenium selenium = SeleniumExecutor() selenium.engine = engine_obj selenium.execution.merge({"scenario": {"requests": ["req"]}}) selenium.prepare() self.obj = JUnitTester() self.obj.env = selenium.env self.obj.settings = engine_obj.config.get("modules").get("junit") self.obj.engine = engine_obj
def test_full(self): self.obj.api_delay = 1 self.obj.responses = [ ResponseEmul(200, '{"result" : {}}'), ResponseEmul(200, '{"result" : {"port": "port1", "host": "host1"}}'), ResponseEmul(200, ''), ResponseEmul(200, ''), # startup: startRecording ResponseEmul(200, ''), # shutdown: stopRecording ResponseEmul(200, '{"result" : {"smartjmx": "unavailable"}}'), ResponseEmul(200, '{"result" : {"smartjmx": "available"}}'), ResponseEmul(200, 'only one string') ] self.obj.engine.config.merge( {'modules': { 'recorder': { 'token': '123' } }}) self.obj.settings = self.obj.engine.config.get('modules').get( 'recorder') self.obj.prepare() self.assertEqual(self.obj.proxy_addr, 'http://host1:port1') self.obj.engine.provisioning.executors = [SeleniumExecutor()] self.obj.startup() self.obj.shutdown() self.obj.post_process() res_file = self.obj.engine.artifacts_dir + '/generated.jmx' with open(res_file) as fd: lines = fd.readlines() self.assertEqual(len(lines), 1) self.assertEqual(lines[0].strip(), 'only one string')
def test_prepare_java_folder(self): """ Check if scripts exist in working dir :return: """ obj = SeleniumExecutor() obj.engine = EngineEmul() obj.execution = BetterDict() obj.execution.merge({"scenario": {"script": os.path.abspath(__dir__() + "/../../tests/selenium/java/")}}) obj.prepare() prepared_files = os.listdir(obj.runner.working_dir) java_files = [file for file in prepared_files if file.endswith(".java")] class_files = [file for file in prepared_files if file.endswith(".class")] jars = [file for file in prepared_files if file.endswith(".jar")] self.assertEqual(len(java_files), 2) self.assertEqual(len(class_files), 2) self.assertEqual(len(jars), 1)
def test_take_script_from_artifacts(self): "ensures that executor looks for script in artifacts-dir (for cloud/remote cases)" obj = SeleniumExecutor() obj.engine = EngineEmul() obj.engine.file_search_paths = [obj.engine.artifacts_dir] script_name = "BlazeDemo.java" test_script = __dir__() + "/../data/" + script_name artifacts_script = os.path.join(obj.engine.artifacts_dir, script_name) shutil.copy2(test_script, artifacts_script) obj.execution.merge({ "scenario": { "script": script_name, } }) obj.prepare()
def setUp(self): super(TestJUnitTester, self).setUp() engine_obj = EngineEmul() paths = [local_paths_config()] engine_obj.configure(paths) # just download geckodriver & chromedriver with selenium selenium = SeleniumExecutor() selenium.engine = engine_obj selenium.install_required_tools() for driver in selenium.webdrivers: selenium.env.add_path({"PATH": driver.get_driver_dir()}) self.obj = JUnitTester() self.obj.env = selenium.env self.obj.settings = engine_obj.config.get("modules").get("junit") self.obj.engine = engine_obj
def setUp(self): super(TestJUnitTester, self).setUp() engine_obj = EngineEmul() paths = [local_paths_config()] engine_obj.configure(paths) # just download geckodriver & chromedriver with selenium selenium = SeleniumExecutor() selenium.engine = engine_obj selenium.env = selenium.engine.env selenium.execution.merge({"scenario": {"requests": ["req"]}}) selenium.prepare() self.obj = JUnitTester() self.obj.settings = engine_obj.config.get("modules").get("junit") self.obj.engine = engine_obj self.obj.env = self.obj.engine.env
def test_prepare_java_folder(self): """ Check if scripts exist in working dir :return: """ obj = SeleniumExecutor() obj.engine = self.engine_obj obj.settings = self.selenium_config obj.execution = BetterDict() obj.execution.merge( {"scenario": { "script": ABS_PATH("/../../tests/selenium/java/") }}) obj.prepare() prepared_files = os.listdir(obj.runner.working_dir) java_files = [ file for file in prepared_files if file.endswith(".java") ] class_files = [ file for file in prepared_files if file.endswith(".class") ] jars = [file for file in prepared_files if file.endswith(".jar")] self.assertEqual(len(java_files), 2) self.assertEqual(len(class_files), 2) self.assertEqual(len(jars), 1)
def test_selenium_startup_shutdown_java_package(self): """ Run tests from package :return: """ obj = SeleniumExecutor() obj.engine = EngineEmul() obj.engine.config.merge(yaml.load(open("tests/yaml/selenium_executor_java_package.yml").read())) obj.engine.config.merge({"provisioning": "local"}) obj.execution = obj.engine.config['execution'] obj.settings.merge(obj.engine.config.get("modules").get("selenium")) obj.prepare() obj.startup() while not obj.check(): time.sleep(1) obj.shutdown() self.assertTrue(os.path.exists(os.path.join(obj.runner.working_dir, "compiled.jar")))
def runner_fail_no_test_found(self): """ Check that Python Nose runner fails if no tests were found :return: """ obj = SeleniumExecutor() obj.engine = EngineEmul() obj.engine.config = BetterDict() obj.engine.config.merge( {"execution": {"executor": "selenium", "scenario": {"script": "tests/selenium/invalid/dummy.py"}}}) obj.execution = obj.engine.config['execution'] obj.prepare() obj.startup() try: while not obj.check(): time.sleep(1) except BaseException as exc: self.assertEqual(exc.args[0], "Test runner NoseTester has failed: Nothing to test.") obj.shutdown()
def test_samples_count_testcase(self): """ Test exact number of tests when test class extends JUnit TestCase :return: """ obj = SeleniumExecutor() obj.engine = EngineEmul() obj.engine.config = BetterDict() obj.engine.config.merge( {"execution": {"executor": "selenium", "scenario": {"script": "tests/selenium/invalid/SimpleTest.java"}}}) obj.execution = obj.engine.config['execution'] obj.prepare() obj.startup() while not obj.check(): time.sleep(1) obj.shutdown() with open(obj.kpi_file) as kpi_fds: contents = kpi_fds.read() self.assertEqual(contents.count("--TIME:"), 2)
def test_no_test_in_name(self): """ Test exact number of tests when annotations used and no "test" in class name :return: """ obj = SeleniumExecutor() obj.engine = EngineEmul() obj.engine.config = BetterDict() obj.engine.config.merge( {"execution": {"executor": "selenium", "scenario": {"script": "tests/selenium/invalid/selenium1.java"}}}) obj.execution = obj.engine.config['execution'] obj.prepare() obj.startup() while not obj.check(): time.sleep(1) obj.shutdown() with open(obj.kpi_file) as kpi_fds: contents = kpi_fds.read() self.assertEqual(contents.count("--TIME:"), 2)
def setUp(self): super(SeleniumTestCase, self).setUp() self.engine_obj = EngineEmul() self.paths = [ __dir__() + "/../../bzt/10-base.json", local_paths_config() ] self.engine_obj.configure( self.paths ) # FIXME: avoid using whole engine in particular module test! self.engine_obj.config.get("modules").get("selenium").merge( {"virtual-display": { "width": 1024, "height": 768 }}) self.selenium_config = self.engine_obj.config["modules"]["selenium"] self.engine_obj.create_artifacts_dir(self.paths) self.obj = SeleniumExecutor() self.obj.engine = self.engine_obj self.obj.settings = self.selenium_config
def test_fail_on_zero_results(self): obj = SeleniumExecutor() obj.engine = self.engine_obj obj.settings = self.selenium_config obj.engine.config.merge(yaml.load(open(__dir__() + "/../yaml/selenium_executor_requests.yml").read())) obj.engine.config.merge({"provisioning": "local"}) obj.execution = obj.engine.config['execution'] obj.prepare() self.assertRaises(RuntimeWarning, obj.post_process)
def test_prepare_java_single(self): """ Check if script exists in working dir :return: """ obj = SeleniumExecutor() obj.engine = self.engine_obj obj.settings = self.selenium_config obj.execution.merge({ "scenario": { "script": ABS_PATH("/../../tests/selenium/java/TestBlazemeterFail.java") } }) obj.prepare() self.assertTrue( os.path.exists( os.path.join(obj.runner.working_dir, "TestBlazemeterFail.java"))) self.assertTrue( os.path.exists( os.path.join(obj.runner.working_dir, "TestBlazemeterFail.class"))) self.assertTrue( os.path.exists(os.path.join(obj.runner.working_dir, "compiled.jar")))
def test_prepare_java_single(self): """ Check if script exists in working dir :return: """ obj = SeleniumExecutor() obj.engine = EngineEmul() obj.execution = BetterDict() obj.execution.merge({ "scenario": { "script": os.path.abspath( __dir__() + "/../../tests/selenium/java/TestBlazemeterFail.java") } }) obj.prepare() self.assertTrue( os.path.exists( os.path.join(obj.runner.working_dir, "TestBlazemeterFail.java"))) self.assertTrue( os.path.exists( os.path.join(obj.runner.working_dir, "TestBlazemeterFail.class"))) self.assertTrue( os.path.exists(os.path.join(obj.runner.working_dir, "compiled.jar")))
def setUp(self): super(SeleniumTestCase, self).setUp() self.engine = EngineEmul() paths = [local_paths_config()] self.engine.configure(paths) # FIXME: avoid using whole engine in particular module test! self.virtual_display = VirtualDisplay() self.virtual_display.engine = self.engine self.virtual_display.startup() self.obj = SeleniumExecutor() self.obj.engine = self.engine self.obj.settings = self.engine.config.get("modules").get("selenium")
def test_install_tools(self): """ check installation of selenium-server, junit :return: """ dummy_installation_path = os.path.abspath( __dir__() + "/../../build/tmp/selenium-taurus") base_link = "file://" + __dir__() + "/../data/" shutil.rmtree(os.path.dirname(dummy_installation_path), ignore_errors=True) selenium_server_link = SeleniumExecutor.SELENIUM_DOWNLOAD_LINK SeleniumExecutor.SELENIUM_DOWNLOAD_LINK = base_link + "selenium-server-standalone-2.46.0.jar" junit_link = SeleniumExecutor.JUNIT_DOWNLOAD_LINK SeleniumExecutor.JUNIT_DOWNLOAD_LINK = base_link + "junit-4.12.jar" self.assertFalse(os.path.exists(dummy_installation_path)) obj = SeleniumExecutor() obj.engine = EngineEmul() obj.settings.merge({ "selenium-tools": { "junit": { "selenium-server": os.path.join(dummy_installation_path, "selenium-server.jar") } } }) obj.settings.merge({ "selenium-tools": { "junit": { "path": os.path.join(dummy_installation_path, "tools", "junit", "junit.jar") } } }) obj.execution = BetterDict() obj.execution.merge({ "scenario": { "script": os.path.abspath(__dir__() + "/../../tests/selenium/jar/") } }) obj.prepare() self.assertTrue( os.path.exists( os.path.join(dummy_installation_path, "selenium-server.jar"))) self.assertTrue( os.path.exists( os.path.join(dummy_installation_path, "tools", "junit", "junit.jar"))) SeleniumExecutor.SELENIUM_DOWNLOAD_LINK = selenium_server_link SeleniumExecutor.JUNIT_DOWNLOAD_LINK = junit_link
def test_prepare_java_package(self): """ Check if scripts exist in working dir :return: """ obj = SeleniumExecutor() obj.engine = self.engine_obj obj.settings = self.selenium_config obj.execution = BetterDict() obj.execution.merge( {"scenario": {"script": __dir__() + "/../selenium/java_package/"}}) obj.prepare() self.assertTrue(os.path.exists(os.path.join(obj.runner.working_dir, "compiled.jar")))
def test_prepare_jar_folder(self): """ Check if jars exist in working dir :return: """ obj = SeleniumExecutor() obj.engine = self.engine_obj obj.settings = self.selenium_config obj.execution = BetterDict() obj.execution.merge({"scenario": {"script": __dir__() + "/../selenium/jar/"}}) obj.prepare() java_scripts = os.listdir(obj.runner.working_dir) self.assertEqual(len(java_scripts), 2)
def test_selenium_prepare_python_single(self): """ Check if script exists in working dir :return: """ obj = SeleniumExecutor() obj.engine = EngineEmul() obj.execution = BetterDict() obj.execution.merge({"scenario": { "script": __dir__() + "/../selenium/python/test_blazemeter_fail.py"}}) obj.prepare() python_scripts = os.listdir(obj.runner.working_dir) self.assertEqual(len(python_scripts), 1)
def test_prepare_jar_single(self): """ Check if jar exists in working dir :return: """ obj = SeleniumExecutor() obj.engine = self.engine_obj obj.settings = self.selenium_config obj.execution = BetterDict() obj.execution.merge({ "scenario": { "script": ABS_PATH("/../../tests/selenium/jar/dummy.jar") } }) obj.prepare() self.assertTrue( os.path.exists(os.path.join(obj.runner.working_dir, "dummy.jar")))
def test_resource_files_collection_remote_jar(self): obj = SeleniumExecutor() obj.engine = self.engine_obj obj.settings = self.selenium_config obj.engine.config.merge( {'execution': {'scenario': {'script': __dir__() + '/../selenium/jar/'}, 'executor': 'selenium'}, 'reporting': [{'module': 'junit-xml'}]}) obj.engine.config.merge({"provisioning": "local"}) obj.execution = obj.engine.config['execution'] obj.settings.merge(obj.engine.config.get("modules").get("selenium")) res_files = obj.resource_files() res_artifacts = os.listdir(os.path.join(obj.engine.artifacts_dir, res_files[0])) self.assertEqual(len(res_artifacts), 2)
def test_dont_copy_local_script_to_artifacts(self): "ensures that .java file is not copied into artifacts-dir" obj = SeleniumExecutor() obj.engine = EngineEmul() filename = "BlazeDemo.java" script_path = __dir__() + "/../data/" + filename obj.execution.merge({"scenario": { "script": script_path, }}) obj.prepare() files = obj.resource_files() self.assertIn(script_path, files) artifacts_script = os.path.join(obj.engine.artifacts_dir, filename) self.assertFalse(os.path.exists(artifacts_script))