5分pk10导航网_Appium+python自动化(四十一)
- 时间:
- 浏览:2
- 来源:戏世博客 - 专注共享半粒糖博客技术
1.简介
今天.我都都都.我都都都紧接着上一篇继续分享Appium自动化测试框架综合实践 - 代码实现。到今天为止,大功即将告成;框架所都要的代码实现都基本完成。
2.data数据封装
2.1使用背景
在实际项目过程中,.我都都都.我都都都的数据可能性是存储在一个多数据文件中,如txt,excel、csv文件类型。.我都都都.我都都都能否封装一点办法来读取文件中的数据来实现数据驱动。
2.2案例
将测试账号存储在account.csv文件,内容如下:
account.csv
hg2018 |
hg2018 |
hg2019 |
zxw2019 |
666 |
222 |
参考代码
2.3enumerate()简介
enumerate()是python的内置函数
- enumerate在字典上是枚举、列举的意思
- 对于一个多可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个多索引序列,利用它能否并肩获得索引和值
- enumerate多用于在for循环中得到计数。
2.4enumerate()使用
可能性对一个多列表,既要遍历索引又要遍历元素时,首先能否也不我我写:
参考代码
list = ["这", "是", "一个多", "测试","数据"] for i in range(len(list)): print(i,list[i])
上述办法一点累赘,利用enumerate()会更加直接和优美:
参考代码
list1 = ["这", "是", "一个多", "测试","数据"] for index, item in enumerate(list1): print(index,item)
3.数据读取办法封装
数据读取办法也属于公共办法,这里.我都都都.我都都都首先实现一下,时候将其封放进去中间即可。
3.1数据读取办法实现的参考代码
import csv def get_csv_data(csv_file,line): with open(csv_file, 'r', encoding='utf-8-sig') as file: reader=csv.reader(file) for index, row in enumerate(reader,1): if index == line: return row csv_file='../data/account.csv' data=get_csv_data(csv_file,3) print(data)
3.2封装
将其封放进去公共办法中,在一点地方用到的时候,直接导入调用即可。
4.utf-8与utf-8-sig一种 编码格式的区别
UTF-8以字节为编码单元,它的字节顺序在所有系统中都不 一样的,没办法 字节序的问提图片,也时候它实际上不须都要BOM(“ByteOrder Mark”)。时候UTF-8 with BOM即utf-8-sig都要提供BOM。
5.config文件配置
各种配置文件都贴到 去你是什么 目录下。
5.1日志文件配置
主也不我我一点日志信息的配置。
log.config
参考代码
[loggers] keys=root,infoLogger [logger_root] level=DEBUG handlers=consoleHandler,fileHandler [logger_infoLogger] handlers=consoleHandler,fileHandler qualname=infoLogger propagate=0 [handlers] keys=consoleHandler,fileHandler [handler_consoleHandler] class=StreamHandler level=INFO formatter=form02 args=(sys.stdout,) [handler_fileHandler] class=FileHandler level=INFO formatter=form01 args=('../logs/runlog.log', 'a') [formatters] keys=form01,form02 [formatter_form01] format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s [formatter_form02] format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s
6.测试用例封装
这里宏哥举例给小伙伴们演示:封装注册和登录一个多测试用例。
6.1测试用例执行开始英语 开始英语 操作封装
测试用例执行开始英语 和开始英语 的封装,一点模块用到直接导入,调用即可。
myunit.py
参考代码
# coding=utf-8 # 1.先设置编码,utf-8可支持中英文,如上,一般贴到 去第一行 # 2.注释:包括记录创建时间,创建人,项目名称。 ''' Created on 2019-11-20 @author: 北京-宏哥 QQ交流群:707699217 Project:Appium自动化测试框架综合实践 - 代码实现 ''' # 3.导入模块 import unittest from kyb_testProject.common.desired_caps import appium_desired import logging from time import sleep class StartEnd(unittest.TestCase): def setUp(self): logging.info('=====setUp====') self.driver=appium_desired() def tearDown(self): logging.info('====tearDown====') sleep(5) self.driver.close_app()
6.2注册用例
开始英语 注册用例代码逻辑的实现。
test_register.py
参考代码
# coding=utf-8 # 1.先设置编码,utf-8可支持中英文,如上,一般贴到 去第一行 # 2.注释:包括记录创建时间,创建人,项目名称。 ''' Created on 2019-11-20 @author: 北京-宏哥 QQ交流群:707699217 Project:Appium自动化测试框架综合实践 - 代码实现 ''' # 3.导入模块 from kyb_testProject.common.myunit import StartEnd from kyb_testProject.businessView.registerView import RegisterView import logging,random,unittest class RegisterTest(StartEnd): def test_user_register(self): logging.info('======test_user_register======') r=RegisterView(self.driver) username = 'bjhg2019' + 'fly' + str(random.randint(100, 9000)) password = 'bjhg2020' + str(random.randint(100, 9000)) email = 'bjhg' + str(random.randint(100, 9000)) + '@163.com' self.assertTrue(r.register_action(username,password,email)) if __name__ == '__main__': unittest.main()
6.3登录用例
开始英语 登录用例代码逻辑的实现。
test_login.py
参考代码
# coding=utf-8 # 1.先设置编码,utf-8可支持中英文,如上,一般贴到 去第一行 # 2.注释:包括记录创建时间,创建人,项目名称。 ''' Created on 2019-11-13 @author: 北京-宏哥 QQ交流群:707699217 Project:Appium自动化测试框架综合实践 - 代码实现 ''' # 3.导入模块 from kyb_testProject.common.myunit import StartEnd from kyb_testProject.businessView.loginView import LoginView import unittest import logging class TestLogin(StartEnd): csv_file='../data/account.csv' @unittest.skip('test_login_zxw2018') def test_login_zxw2018(self): logging.info('======test_login_zxw2018=====') l=LoginView(self.driver) data=l.get_csv_data(self.csv_file,2) l.login_action(data[0],data[1]) self.assertTrue(l.check_loginStatus()) # @unittest.skip('skip test_login_zxw2017') def test_login_zxw2017(self): logging.info('======test_login_zxw2017=====') l=LoginView(self.driver) data = l.get_csv_data(self.csv_file, 1) l.login_action(data[0], data[1]) self.assertTrue(l.check_loginStatus()) @unittest.skip('test_login_error') def test_login_error(self): logging.info('======test_login_error=====') l = LoginView(self.driver) data = l.get_csv_data(self.csv_file, 3) l.login_action(data[0], data[1]) self.assertTrue(l.check_loginStatus(),msg='login fail!') if __name__ == '__main__': unittest.main()
7.小结
到此,Appium自动化测试框架就差下一篇就完整篇 完成了,聪明的你都懂好久???嘿嘿!慢慢地来吧。
下节预告
下一篇,讲解执行测试用例,生成测试报告,以及自动化平台,请关注宏哥,敬请期待!!!