python中类方法的应用实例一

项目背景:生物识别设备,单机版本使用测试其稳定性。实现功能:新增人员,每采集一次生物特征,调用虹膜摄像头一次,日志显示打开虹膜摄像头次数 + 1。使用两种方式来实现,一种使用类方法。另一种不使用类方法。

第一种:使用类方法实现
项目代码


from Foo.capability_json import getDriver
from Foo.login import Login
from Foo.pageSwitch import PageSwitch
from util.baseView import BaseView
from selenium.webdriver.common.by import By
from appium.webdriver.common.touch_action import TouchAction
import logging
import logging.config
from faker import Faker

import time

'''
desc:HD091校园试点,单机人员新增和采集功能
auth:ven
date:2020-12-09
'''

class Person(BaseView):
    CON_LOG = '../docs/log.conf'
    logging.config.fileConfig(CON_LOG)
    f = Faker(locale='zh_CN')
    count = 0

    def __init__(self, driver):
        BaseView.__init__(self, driver)
        self.image_icon = (By.ID, 'com.sykean.biometrics:id/imageView_face_icon')
        self.edit = (By.ID, 'com.sykean.biometrics:id/modify')  # 人员编辑按钮
        self.iris_capture = (By.ID, 'com.sykean.biometrics:id/btn_iris_capture')  # 虹膜采集
        self.face_capture = (By.ID, 'com.sykean.biometrics:id/btn_face_capture')
        self.dialog_ok = (By.ID, 'com.sykean.biometrics:id/btn_dialog_ok')  # 确认是否重新采集虹膜
        self.dialog_cancel = (By.ID, 'com.sykean.biometrics:id/btn_dialog_cancel')  # 确认是否取消本次操作
        self.back = (By.ID, 'com.sykean.biometrics:id/btn_back')
        self.add_user = (By.ID,'com.sykean.biometrics:id/ibtn_add_user')
        # self.edit_values = (By.ID,'com.sykean.biometrics:id/edt_edit_value')
        self.save_user = (By.ID,'com.sykean.biometrics:id/btn_save_user')
        self.home = (By.ID,'com.sykean.biometrics:id/btn_home')
    def test_edit_person(self):
        el = self.find_element(*self.image_icon)
        # 长按
        TouchAction(self.driver).long_press(el).perform()
        time.sleep(2)
        self.click_element(*self.edit)
    def test_add_user(self):

        # 人员新增按钮
        self.click_element(*self.add_user)

        eles = self.driver.find_elements_by_class_name("android.widget.EditText")
        # 编号
        eles[0].send_keys(self.f.random_int())
        # 姓名
        eles[1].send_keys(self.f.name())
        # 身份证号
        eles[2].send_keys(self.f.ssn())
        # 卡号
        # eles[3].send_keys(self.f.phone_number())
        # 部门
        eles[3].send_keys(self.f.company_prefix())
        # 韦根
        eles[5].send_keys(self.f.phone_number())
        # 传参count,需要使用全局变量count
        self.test_regist()

        self.click_element(*self.save_user)
        # logging.info('---人员新增成功---')

    def test_regist(self):
        # 特征采集
        try:
            self.click_element(*self.iris_capture)
            logging.info('--第{}次采集开始---'.format(self.get_count()))
            time.sleep(5)
            self.click_element(*self.back)
        except Exception as e:
            logging.info('---生物特征采集异常---',e.args)

    def test_back(self):
        self.click_element(*self.back)
    def test_home(self):
        self.click_element(*self.home)

    '''
    desc:使用类方法,每一次实例化类后,count不会初始化,仍会加载上次被修改后的的值
         这里再每一次调用注册生物特征方法后,count+1实现记录采集次数
    '''
    @classmethod
    def get_count(cls):
        cls.count += 1
        return cls.count


if __name__ == '__main__':

    driver = getDriver()

    for i in range(10000):
        Login(driver).login()
        # 进入人员管理模块
        PageSwitch(driver).menuUser()
        p = Person(driver)
        if i%2 !=0:
            p.test_home()
            logging.info('-----切换至识别模式-----')
            time.sleep(3)
        else:
            try:
                logging.info('-----p.count={}'.format(p.count))
                logging.info('-----切换至采集模式-----')
                p.test_add_user()
                p.test_home()
              
            except:
                print('---异常终止,请继续---')
                try:
                    p.test_home()
                except:
                    p.test_back()
                    p.test_home()

第二种:未使用类方法实现
(1)首先声明一个类属性,count
(2)在test_add_user(self,count):方法中调用test_regist(self,count)方法,在方法test_regist(self,count)中只用类方法count
(3)在if name == ‘main’:中实例化一次Person,之后将p.count也就是类的属性count传入方法test_add_user(self,count)中

import logging
import logging.config
from faker import Faker

import time

'''
desc:HD091校园试点,单机人员新增和采集功能
auth:shiwen
date:2020-12-09
'''

class Person(BaseView):
    CON_LOG = '../docs/log.conf'
    logging.config.fileConfig(CON_LOG)
    f = Faker(locale='zh_CN')
    count = 0

    def __init__(self, driver):
        BaseView.__init__(self, driver)
        self.image_icon = (By.ID, 'com.sykean.biometrics:id/imageView_face_icon')
        self.edit = (By.ID, 'com.sykean.biometrics:id/modify')  # 人员编辑按钮
        self.iris_capture = (By.ID, 'com.sykean.biometrics:id/btn_iris_capture')  # 虹膜采集
        self.face_capture = (By.ID, 'com.sykean.biometrics:id/btn_face_capture')
        self.dialog_ok = (By.ID, 'com.sykean.biometrics:id/btn_dialog_ok')  # 确认是否重新采集虹膜
        self.dialog_cancel = (By.ID, 'com.sykean.biometrics:id/btn_dialog_cancel')  # 确认是否取消本次操作
        self.back = (By.ID, 'com.sykean.biometrics:id/btn_back')
        self.add_user = (By.ID,'com.sykean.biometrics:id/ibtn_add_user')
        # self.edit_values = (By.ID,'com.sykean.biometrics:id/edt_edit_value')
        self.save_user = (By.ID,'com.sykean.biometrics:id/btn_save_user')
    def test_edit_person(self):
        el = self.find_element(*self.image_icon)
        # 长按
        TouchAction(self.driver).long_press(el).perform()
        time.sleep(2)
        self.click_element(*self.edit)
    def test_add_user(self,count):

        # 人员新增按钮
        self.click_element(*self.add_user)

        eles = self.driver.find_elements_by_class_name("android.widget.EditText")
        # 编号
        eles[0].send_keys(self.f.random_int())
        # 姓名
        eles[1].send_keys(self.f.name())
        # 身份证号
        eles[2].send_keys(self.f.ssn())
        # 卡号
        # eles[3].send_keys(self.f.phone_number())
        # 部门
        eles[3].send_keys(self.f.company_prefix())
        # 韦根
        eles[5].send_keys(self.f.phone_number())
        # 传参count,需要使用全局变量count
        self.test_regist(self.count)

        self.click_element(*self.save_user)
        logging.info('---人员新增成功---')

    def test_regist(self,count):
        # 特征采集
        try:
            self.click_element(*self.iris_capture)
            logging.info('--第{}次采集开始---'.format(count))
            print('全局count',count)
            self.count += 1
            time.sleep(5)
            self.click_element(*self.back)
        except Exception as e:
            logging.info('---生物特征采集异常---')

    def test_back(self):
        self.click_element(*self.back)


if __name__ == '__main__':
    driver = getDriver()
    Login(driver).login()
    PageSwitch(driver).menuUser()

    p = Person(driver)
    while True:

        try:
            p.test_add_user(p.count)

        except:
            print('---异常终止,请继续---')
            Person(driver).test_back()

好了,今天的分享就结束了,不懂的可以评论哈。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值