python的文本编辑geny_基于appium完成的线性代码援用unittest单元测试框架,基于Python的Appium环境搭建合集,Genymotion模拟器的装置及剧本制造,Appium P...

在前段时间,分享了几篇关于appium基本的博文,再加上时期也有讲到unittest测试框架,所以本日就来一个专题,在appium+python完成的线性代码基本上,引入unittest框架,使代码更简约。

之前的博客,能够见以下链接疾速浏览:

基于Python的Appium环境搭建合集

Genymotion模拟器的装置及剧本制造

Appium Python API 中文版

Appium-Server与Appium-Desktop的区分

单元测试框架Uinttest一文详解

在以上博文中,代码示例,许多只是个线性剧本,没有太多的有用的地方,用来写个demo照样能够,但现实运用到产物中,就不行了。剧本照样得援用框架,如许看起来,代码就不会那末乱,更有逻辑性,便于保护。

好了,进入正题,对unittest以及appium还不熟习的,能够先浏览如上的博文相识,此篇文中,就不赘述了。

unittest代码优化一

优化逻辑:

①将启用效劳字段放到初始化当中

②将输入账号、输入暗码、猎取当前activity的操纵封装成一个个函数

③在用例中去挪用须要实行的函数

示例代码以下:

importseleniumimporttimefrom appium importwebdriverfrom selenium.webdriver.support.ui importWebDriverWaitimportunittest'''@author: wenyihuqingjiu

@project: appiumcode

@file: test_login.py

@time: 2019-10-20 22:11

@desc:'''

print('selenium version =', selenium.__version__)definput_account(self):

account= self.driver.find_element_by_id('id/rel_content')

account.find_element_by_id('id/edit_acount')print("定位输入框")

self.driver.press_keycode(61)print("换行操纵")

account.send_keys('')print("账号输入终了")

time.sleep(2)defcurrent(self):

ac=self.driver.current_activityprint('当前activity:' +ac)definput_password(self):#genymotion只须要一次换行

self.driver.press_keycode(61)print("换行操纵")

password= self.driver.find_element_by_id('id/rel_content')

password.find_element_by_id('id/edit_pass')print("定位输入框")

password.send_keys('')print("输入暗码")

self.driver.find_element_by_xpath('//android.widget.TextView[@text="登 录"]').click()print("点击登录")

time.sleep(5)print('登录胜利')classcase_01(unittest.TestCase):

@classmethoddefsetUpClass(cls):

desired_caps={'platformName': 'Android','platformVersion': '4.4.4','deviceName': 'S5','appPackage': '',#非初次登录的activity

'appActivity': '.ui.login.view.LoginActivity','udid': '192.168.66.101:5555','noReset': 'true',

}

cls.driver= webdriver.Remote('http://192.168.1.101:4723/wd/hub', desired_caps)print("效劳启动胜利")

@classmethoddeftearDownClass(cls):

cls.driver.quit()defadd_img(self):

self.imgs.append(self.driver.get_screenshot_as_base64())returnTruedefsetUp(self):#在是python3.x 中,假如在这里初始化driver ,由于3.x版本 unittestbasic1 运行机制差别,会致运用力失利时截图失利

self.driver.implicitly_wait(30)

self.imgs=[]

self.addCleanup(self.cleanup)defcleanup(self):pass

deftest_login01(self):

input_account(self)

current(self)

input_password(self)if __name__ == "__main__":

suites=unittest.TestSuite()

suites.addTest(case_01("test_login01"))

runner= unittest.TextTestRunner(verbosity=2)

runner.run(suites)

unittest代码优化二

优化逻辑:

①将启用效劳字段放到初始化当中

②将输入账号、输入暗码、猎取当前activity的操纵封装成一个个函数,并将数据参数做成形参

③在用例中去挪用须要实行的函数并入参

示例代码以下:

importseleniumimporttimefrom appium importwebdriverfrom selenium.webdriver.support.ui importWebDriverWaitimportunittest'''@author: wenyihuqingjiu

@project: appiumcode

@file: test_login.py

@time: 2019-10-20 22:11

@desc:'''

print('selenium version =', selenium.__version__)definput_account(self, username):

account= self.driver.find_element_by_id('id/rel_content')

account.find_element_by_id('id/edit_acount')print("定位输入框")

self.driver.press_keycode(61)print("换行操纵")

account.send_keys(username)print("账号输入终了")

time.sleep(2)defcurrent(self):

ac=self.driver.current_activityprint('当前activity:' +ac)definput_password(self, send_password):#genymotion只须要一次换行

self.driver.press_keycode(61)print("换行操纵")

password= self.driver.find_element_by_id('id/rel_content')

password.find_element_by_id('id/edit_pass')print("定位输入框")

password.send_keys(send_password)print("输入暗码")

self.driver.find_element_by_xpath('//android.widget.TextView[@text="登 录"]').click()print("点击登录")

time.sleep(5)print('登录胜利')classcase_01(unittest.TestCase):

@classmethoddefsetUpClass(cls):

desired_caps={'platformName': 'Android','platformVersion': '4.4.4','deviceName': 'S5','appPackage': '',#非初次登录的activity

'appActivity': '.ui.login.view.LoginActivity','udid': '192.168.66.101:5555','noReset': 'true',

}

cls.driver= webdriver.Remote('http://192.168.1.101:4723/wd/hub', desired_caps)print("效劳启动胜利")

@classmethoddeftearDownClass(cls):

cls.driver.quit()defadd_img(self):

self.imgs.append(self.driver.get_screenshot_as_base64())returnTruedefsetUp(self):#在是python3.x 中,假如在这里初始化driver ,由于3.x版本 unittestbasic1 运行机制差别,会致运用力失利时截图失利

self.driver.implicitly_wait(30)

self.imgs=[]

self.addCleanup(self.cleanup)defcleanup(self):pass

deftest_login01(self):#一般登录

input_account(self, "")

current(self)

input_password(self,"")deftest_login02(self):#非常登录

input_account(self, "")

current(self)

input_password(self,"")if __name__ == "__main__":

suites=unittest.TestSuite()

suites.addTest(case_01("test_login01"))

suites.addTest(case_01("test_login02"))

runner= unittest.TextTestRunner(verbosity=2)

runner.run(suites)

经由过程上述代码可看出,运用更方便了,能够满足正向/反向的用例设想了,是否是很简单。

代码可扩展性另有许多,在unittest基本上,再引入PO形式,那代码的健壮性就更高了,今后有时间再出相似博文。

本文仅代表作者看法,系作者@温一壶清酒宣布。

迎接转载,但未经作者赞同必需保存此段声明,且在文章页面显著位置给出原文衔接,不然保存追查法律责任的权益。

文章出处:http://www.cnblogs.com/hong-fithing/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值