代码
app模块里封装了driver.quit和driver.close两个方法,然后在testcase的teardown里调用这两个方法
“”"
from appium import webdriver
from HogwartsSDET14.app.page.basepage import BasePage
from HogwartsSDET14.app.page.mainpage import MainPage
class App(BasePage):
def start(self):
'''
启动app
'''
if self.driver == None:
# 第一次调用start()方法的时候driver 为None
caps = {}
caps["platformName"] = "android"
caps["deviceName"] = "5eb2803"
caps["appPackage"] = "com.tencent.wework"
caps["appActivity"] = ".launch.LaunchSplashActivity"
caps["noReset"] = "true"
caps['skipServerInstallation'] = 'true' # 跳过 uiautomator2 server的安装
caps['skipDeviceInitialization'] = 'true' # 跳过设备初始化
# caps['dontStopAppOnReset'] = 'true' # 启动之前不停止app
caps['settings[waitForIdleTimeout]'] = 0
caps['unicodeKeyboard'] = 'true'
caps['resetKeyboard']='true'
caps['automationName'] ='uiautomator2'
# 与server 建立连接,初始化一个driver 创建session,返回一个sessionid
self.driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
else:
# launch_app() 这个方法不需要传入任何参数, 会自动启动起来DesireCapa里面定义的activity
# start_activity(packagename, activityname) 可以启动其它的应用的页面
self.driver.launch_app()
self.driver.implicitly_wait(20)
return self
def restart(self):
'''
重启app
'''
self.driver.close()
self.driver.launch_app()
return self
def stop(self):
'''
停止 app
'''
print("关闭app")
self.driver.quit()
“”"
tescaset执行代码
“”"
mport pytest
import yaml
from HogwartsSDET14.app.page.app import App
class TestContact:
def setup_class(self):
self.app = App()
def teardown_class(self):
self.app.stop()
@pytest.mark.parametrize('name,gender,phonenum',
addcontactdatas)
def test_addcontact(self, name, gender, phonenum):
print(name, gender, phonenum)
“”"
运行完testcase的代码之后报错如下:
不明白为什么调用这两个方法会报错误呢?