appium 多个测试用例<多个 **.py文件>,只执行一次app <Python 3.8.1>

本文只启动一次app指的是有多个测试的.py文件这种情况

如果是在测试类如LoginTest中,有多个测试方法,如: test_1, test_2,想保证在执行完test_1后,不重新启动app,接着执行test_2,则把初始化的方法setUp换为setUpClass。

setUp是在每个test方法运行前执行,有多少个test方法,就执行多少次,setUpClass方法是在所有test方法运行前执行,只执行一次。

问题描述:在test_case中,有多个测试的.py文件,每次执行完一个.py文件,就会重新启动一次app,于是就想,有没有什么办法只启动一次app

解决方法:

  单例模式

    单例模式可以确保某个类只有一个实例存在。让所有的.py文件公用一个driver,就可以避免多次启动app。

    如下在Public.py文件中

1      _instence = None
2      _instence_lock = threading.Lock()
3      def get_devices(self):
4          with Readconf._instence_lock:
5              #Readconf为当前的类名
6              if not Readconf._instence:
7                  # conn_app为初始化devices的方法,具体内容,在下方显示
8                  Readconf._instence = Readconf().conn_app()
9          return Readconf._instence

上述代码写完后,具体调用方式如下:

 1     @classmethod
 2     def setUpClass(cls):
 3         # Readconf类为get_devices方法所在的类
 4         cls.devices = Readconf().get_devices()
 5 
 6     # 然后正常调用 devices就可以了
 7     def test_a(self):
 8         self.devices.implicitly_wait(30)
 9         self.devices.find_element_by_id('******').click()
10         self.devices.find_element_by_id('******').click()

初始话devices的方法内容如下< conn_app() >:

 1     def conn_app(self):
 2         desired_caps = {
 3             "deviceName": self.conn('deviceName'),
 4             "platformName": self.conn('platformName'),
 5             "skipServerInstallation": self.conn('skipServerInstallation'),
 6             "skipDeviceInitialization": self.conn('skipDeviceInitialization'),
 7             # "noReset": self.conn('noReset'),
 8             "automationName": self.conn('automationName'),
 9             "appPackage": self.conn('appPackage'),
10             "appActivity": self.conn('appActivity'),
11             # "appWaitActivity":self.conn('appWaitActivity'),
12             "udid": self.conn('udid'),
13             "resetKeyboard": self.conn('resetKeyboard')
14             }
15         self.driver = webdriver.Remote(self.conn('url'), desired_caps)
16         return self.driver

  

猜你喜欢

转载自www.cnblogs.com/guanyf/p/12187540.html