python中类方法的应用实例一
程序员文章站
2022-06-16 20:18:26
...
项目背景:生物识别设备,单机版本使用测试其稳定性。实现功能:新增人员,每采集一次生物特征,调用虹膜摄像头一次,日志显示打开虹膜摄像头次数 + 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()
好了,今天的分享就结束了,不懂的可以评论哈。
上一篇: 教你在多系统下更改Win8默认开机系统_MySQL
下一篇: php变量在哪些情况下会销毁