May-03-2019, 09:24 AM
Basically I am writing an appium code to automate one native app. Now what I want is that instead of hard coding the capabilities I want to use an external dictionary which will provide data to my test case regarding all capabilities.How can I achieve that
here is my main programm
here is my main programm
from appium import webdriver from time import sleep from pathlib2 import Path import os from appium.webdriver.common.touch_action import TouchAction import unittest class report(unittest.TestCase): def setUp(self): """"Launch the settings""" capabilities = {} capabilities["platformName"] = "Android" capabilities["platformVersion"] = "8.0.0" capabilities["deviceName"] = "Nil_Emulator" capabilities["app"] = os.path.abspath(str(Path(__file__).parents[1]) + "/apk/medical-wisdom-1.0.8.apk") self.driver = webdriver.Remote('http://localhost:4723/wd/hub', capabilities) self.driver.implicitly_wait(30) def tearDown(self): self.driver.quit() def test_report(self): element_best_practice = self.driver.find_elements_by_xpath("//android.widget.RelativeLayout[@index=0]") action = TouchAction(self.driver) action.tap(element_best_practice[4]).perform() sleep(3) element_report_record = self.driver.find_element_by_xpath("//android.widget.ImageView[@index=1]") action.tap(element_report_record).perform() sleep(3) if __name__ == '__main__': suite = unittest.TestLoader().loadTestsFromTestCase(report) unittest.TextTestRunner(verbosity=2).run(suite)Also the code which is going to return a dictionary is
from devices import DeviceSelection import subprocess class getOS(DeviceSelection): def __init__(self): super(getOS,self).__init__() self.dict = {} def getdata(self): for device in self.list: output = subprocess.check_output("adb -s " + device+" shell getprop ro.build.version.release ",shell=True) self.dict[device]= output return self.dict