hi,你好!欢迎访问本站!登录
本站由网站地图腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 教程 - 杂谈 - 正文 君子好学,自强不息!

基于appium完成的线性代码援用unittest单元测试框架,基于Python的Appium环境搭建合集,Genymotion模拟器的装置及剧本制造,Appium Python API 中文版,Appium-Server与Appium-Desktop的区分,单元测试框架Uinttest一文详解

2019-11-18杂谈搜奇网38°c
A+ A-

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

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

基于Python的Appium环境搭建合集

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

Appium Python API 中文版

Appium-Server与Appium-Desktop的区分

单元测试框架Uinttest一文详解

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

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

unittest代码优化一

优化逻辑:

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

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

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

示例代码以下:

import selenium
import time
from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
import unittest

'''
@author: wenyihuqingjiu
@project: appiumcode
@file: test_login.py
@time: 2019-10-20 22:11
@desc:
'''

print('selenium version = ', selenium.__version__)


def input_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)


def current(self):
    ac = self.driver.current_activity
    print('当前activity:' + ac)


def input_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('登录胜利')


class case_01(unittest.TestCase):
    @classmethod
    def setUpClass(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("效劳启动胜利")

    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()

    def add_img(self):
        self.imgs.append(self.driver.get_screenshot_as_base64())
        return True

    def setUp(self):
        # 在是python3.x 中,假如在这里初始化driver ,由于3.x版本 unittestbasic1 运行机制差别,会致运用力失利时截图失利
        self.driver.implicitly_wait(30)
        self.imgs = []
        self.addCleanup(self.cleanup)

    def cleanup(self):
        pass

    def test_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的操纵封装成一个个函数,并将数据参数做成形参

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

示例代码以下:

import selenium
import time
from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
import unittest

'''
@author: wenyihuqingjiu
@project: appiumcode
@file: test_login.py
@time: 2019-10-20 22:11
@desc:
'''

print('selenium version = ', selenium.__version__)


def input_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)


def current(self):
    ac = self.driver.current_activity
    print('当前activity:' + ac)


def input_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('登录胜利')


class case_01(unittest.TestCase):
    @classmethod
    def setUpClass(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("效劳启动胜利")

    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()

    def add_img(self):
        self.imgs.append(self.driver.get_screenshot_as_base64())
        return True

    def setUp(self):
        # 在是python3.x 中,假如在这里初始化driver ,由于3.x版本 unittestbasic1 运行机制差别,会致运用力失利时截图失利
        self.driver.implicitly_wait(30)
        self.imgs = []
        self.addCleanup(self.cleanup)

    def cleanup(self):
        pass

    def test_login01(self):
        # 一般登录
        input_account(self, "")
        current(self)
        input_password(self, "")
        
    def test_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/
  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  移步手机端
基于appium完成的线性代码援用unittest单元测试框架,基于Python的Appium环境搭建合集,Genymotion模拟器的装置及剧本制造,Appium Python API 中文版,Appium-Server与Appium-Desktop的区分,单元测试框架Uinttest一文详解

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
未定义标签

本文来源:搜奇网

本文地址:https://www.sou7.cn/282002.html

关注我们:微信搜索“搜奇网”添加我为好友

版权声明: 本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。请记住本站网址https://www.sou7.cn/搜奇网。

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>