Prashanth Sams
Prashanth Sams

Reputation: 21129

Fixture "setUp" called directly. Fixtures are not meant to be called directly

Commandline

python3 -m pytest src/spec/ --app=android

conftest.py

import pytest

def pytest_addoption(parser):
    parser.addoption('--app')

@pytest.fixture(scope="session")
def app(request):
    return request.config.getoption("--app")

driver.py

import pytest

class Driver(unittest.TestCase):

    def __init__(self, driver):
        unittest.TestCase.__init__(self, driver)

    @pytest.fixture(autouse=True)
    def setUp(self, app):
        self.app = app

        if self.app == 'ios':
            desired_caps = {}
            desired_caps['platformName'] = 'ios'
            desired_caps['platformVersion'] = ''
            desired_caps['deviceName'] = 'PF'

        elif self.app == 'android':
            desired_caps = {}
            desired_caps['platformName'] = 'Android'
            desired_caps['platformVersion'] = ''
            desired_caps['deviceName'] = 'PF'
            desired_caps['appPackage'] = 'com.wdiodemoapp'
            desired_caps['appActivity'] = 'com.wdiodemoapp.MainActivity'

        self.driver = webdriver.Remote("http://0.0.0.0:4723/wd/hub", desired_caps)

enter image description here

Upvotes: 3

Views: 3876

Answers (1)

Prashanth Sams
Prashanth Sams

Reputation: 21129

The issue is cos of mixing up of unittest with pytest. The below fixed it.

def setUp(self):
   Driver.fix

   if self.app == 'ios':
      desired_caps = {}
      desired_caps['platformName'] = 'ios'
      desired_caps['platformVersion'] = ''
      desired_caps['deviceName'] = 'PF'

   elif self.app == 'android':
      desired_caps = {}
      desired_caps['platformName'] = 'Android'
      desired_caps['platformVersion'] = ''
      desired_caps['deviceName'] = 'PF'
      desired_caps['appPackage'] = 'com.wdiodemoapp'
      desired_caps['appActivity'] = 'com.wdiodemoapp.MainActivity'

@pytest.fixture(autouse=True)
def fix(self, app):
   self.app = app

Upvotes: 3

Related Questions