예제 #1
0
    def setup_method_selenium(self, method):
        self.name = type(self).__name__ + '.' + method.__name__
        self.event = EventLogger(self.name)

        # Setup self.capabilities
        capabilities = {}

        # Web
        capabilities['platform'] = os.getenv('PLATFORM')
        capabilities['browserName'] = os.getenv('BROWSER')
        capabilities['version'] = os.getenv('VERSION')

        self.event.start(capabilities)

        self.driver = seleniumdriver.Remote(
            desired_capabilities=self.capabilities,
            command_executor=os.getenv('EXECUTOR'))

        self.driver.implicitly_wait(DEFAULT_WAIT_TIME)
        self.caps = self.capabilities
예제 #2
0
    def setup_method(self, method, caps=False):
        self.name = type(self).__name__ + '.' + method.__name__
        self.event = EventLogger(self.name)

        # Setup capabilities
        capabilities = {}

        # Appium
        capabilities["appium-version"] = os.getenv('APPIUM_VERSION')
        capabilities["name"] = os.getenv('NAME')
        capabilities['platformName'] = os.getenv('PLATFORM')
        capabilities['platformVersion'] = os.getenv('PLATFORM_VERSION')
        capabilities['deviceName'] = os.getenv('DEVICE')
        capabilities['app'] = os.getenv('APP')
        capabilities["custom-data"] = {'test_name': self.name}

        # Testdroid
        capabilities['testdroid_target'] = os.getenv('TESTDROID_TARGET')
        capabilities['testdroid_project'] = os.getenv('TESTDROID_PROJECT')
        capabilities['testdroid_testrun'] = os.getenv('NAME') + '-' + self.name
        capabilities['testdroid_device'] = os.getenv('TESTDROID_DEVICE')
        capabilities['testdroid_app'] = os.getenv('APP')

        # Log capabilitites before any sensitive information (credentials) are added
        # self.log({'event': {'type': 'start', 'data': capabilities}})
        self.event.start(capabilities)

        # Credentials
        capabilities['testdroid_username'] = os.getenv('USERNAME')
        capabilities['testdroid_password'] = os.getenv('PASSWORD')

        capabilities.update(caps) if caps else None

        self.driver = webdriver.Remote(desired_capabilities=capabilities,
                                       command_executor=os.getenv('EXECUTOR'))

        self.driver.implicitly_wait(60)
예제 #3
0
    def setup_method(self, method, caps=False):
        self.name = type(self).__name__ + '.' + method.__name__

        if 'TESTDROID_SERVER_URL' in os.environ or 'VIRTUAL_ENV' in os.environ:

            try:
                self.test_script_filename
            except AttributeError:
                err = "you need the line 'test_script_filename = __file__' after your class declaration and before \
                your first test method in each of your test script files"

                print err
                raise RuntimeError(err)

            test_script_dir, test_script_filename = self.parse_test_script_dir_and_filename(
                self.test_script_filename)
            self.hosting_platform = 'testdroid'
            self.event = EventLogger(self.name,
                                     hosting_platform=self.hosting_platform,
                                     test_file_dir=test_script_dir,
                                     test_file_name=test_script_filename)

            self.capabilities['appium-version'] = os.getenv('APPIUM_VERSION')
            self.capabilities['platformName'] = os.getenv('PLATFORM') or (
                'android' if os.getenv('ANDROID_HOME') else 'ios')
            self.capabilities['deviceName'] = os.getenv('DEVICE') or os.getenv(
                'DEVICE_DISPLAY_NAME')
            self.capabilities['app'] = os.getenv('APP') or os.getenv(
                'APPIUM_APPFILE')
            self.capabilities['newCommandTimeout'] = os.getenv(
                'NEW_COMMAND_TIMEOUT')

            # iOS 10, XCode8 support
            if os.getenv('AUTOMATION_NAME'):
                self.capabilities["automationName"] = os.getenv(
                    'AUTOMATION_NAME')
            if os.getenv('UDID'):
                self.capabilities["udid"] = os.getenv('UDID')

            executor = os.getenv('EXECUTOR', 'http://localhost:4723/wd/hub')

        else:  # we're running on Testlio
            self.hosting_platform = 'testlio'
            self.event = EventLogger(self.name,
                                     hosting_platform=self.hosting_platform)

            self.capabilities["appium-version"] = os.getenv('APPIUM_VERSION')
            self.capabilities["name"] = os.getenv('NAME')
            self.capabilities['platformName'] = os.getenv('PLATFORM')
            self.capabilities['platformVersion'] = os.getenv(
                'PLATFORM_VERSION')
            self.capabilities['udid'] = os.getenv('UDID')
            self.capabilities['deviceName'] = os.getenv('DEVICE')
            self.capabilities["custom-data"] = {'test_name': self.name}

            executor = os.getenv('EXECUTOR')

        # if you want to use an app that's already installed on the phone...
        if os.getenv('APP'):
            self.capabilities['app'] = os.getenv('APP')
        else:
            self.capabilities['appPackage'] = os.getenv('APP_PACKAGE')
            self.capabilities['appActivity'] = os.getenv('APP_ACTIVITY')

        if os.getenv('NEW_COMMAND_TIMEOUT'):
            self.capabilities["newCommandTimeout"] = os.getenv(
                'NEW_COMMAND_TIMEOUT')
        else:
            self.capabilities["newCommandTimeout"] = 1300

        # Do NOT resign the app.  This is necessary for certain special app features.
        # I had to set NO_SIGN for in-app billing, otherwise I'd get the error
        # "This version of the app is not configured for billing through google play..."
        self.capabilities["noSign"] = True

        # Testdroid
        if os.getenv('TESTDROID_TARGET'):
            self.capabilities['testdroid_target'] = os.getenv(
                'TESTDROID_TARGET')

        if os.getenv('TESTDROID_PROJECT'):
            self.capabilities['testdroid_project'] = os.getenv(
                'TESTDROID_PROJECT')

        if os.getenv('NAME'):
            self.capabilities['testdroid_testrun'] = os.getenv(
                'NAME') + '-' + self.name

        if os.getenv('TESTDROID_DEVICE'):
            self.capabilities['testdroid_device'] = os.getenv(
                'TESTDROID_DEVICE')

        if os.getenv('APP'):
            self.capabilities['testdroid_app'] = os.getenv('APP')

        # Log capabilitites before any sensitive information (credentials) are added
        # self.log({'event': {'type': 'start', 'data': self.capabilities}})
        if self.hosting_platform == 'testlio':
            self.event.start(self.capabilities)

        # Credentials
        self.capabilities['testdroid_username'] = os.getenv('USERNAME')
        self.capabilities['testdroid_password'] = os.getenv('PASSWORD')

        self.capabilities.update(caps) if caps else None

        self.driver = webdriver.Remote(desired_capabilities=self.capabilities,
                                       command_executor=executor)

        self.driver.implicitly_wait(self.default_implicit_wait)

        if str(self.capabilities['platformName']).lower() == 'android':
            self.IS_ANDROID = True
            self.IS_IOS = False
        elif str(self.capabilities['platformName']).lower() == 'ios':
            self.IS_ANDROID = False
            self.IS_IOS = True

        os.environ[FAILURES_FOUND] = "false"
        os.environ[SOFT_ASSERTIONS_FAILURES] = ""
        self.caps = self.capabilities