update 0910

This commit is contained in:
zhulixin 2018-09-10 18:08:00 +08:00
parent 471aa6c9fa
commit fd77157414
1 changed files with 39 additions and 29 deletions

View File

@ -1,3 +1,7 @@
## 0910 UPDATE
* 新增控件集参数化相同测试步骤的Android/iOS可共用一份测试用例
* 不同测试步骤的用例还需要单独写
## 0904 UPDATE
* 优化Android log及crsahinfo相关输出路径
* 新增iOS crashreport解析
@ -48,6 +52,7 @@ BaseFile.py
BasePickle.py
BaseYaml.py
BaseOperate.py
BaseReplace.py
测试执行相关:
BaseAppiumServer.py
@ -67,6 +72,7 @@ iOS crash report  解析相关:
BaseIosCrash.py 解析脚本
FileOperate.py 文件操作相关
symbolicatecrash xCode自带的解析工具获取方式find /Applications/Xcode.app -name symbolicatecrash -type f复制过来就行了
```
#### 4.Log
@ -221,35 +227,38 @@ class PageOperate:
#### 5.testcase层调用page层
```buildoutcfg
class HomeTest(ParametrizedTestCase):
def testFirstOpen(self):
app = {"logTest": self.logTest, "driver": self.driver, "path": PATH("../yamls/Android/home/firstOpen.yaml"),
"device": self.udid, "platformName":self.platformName, "caseName": sys._getframe().f_code.co_name}
tc_temp = PATH("../yamls/temp.yaml")
el_android = PATH("../yamls/el_android.yaml")
el_iOS = PATH("../yamls/el_iOS.yaml")
class HomeTest(ParametrizedTestCase):
def repalce(self, tc, tc_temp):#用了最笨的替换字符串方法输出一个临时temp.yaml文件测试完成后再删除
if self.platformName == 'android':
ReplaceYaml(tc, tc_temp, el_android)
elif self.platformName == 'iOS':
ReplaceYaml(tc, tc_temp, el_iOS)
def testFirstOpen(self):
tc = PATH("../yamls/home/firstOpen.yaml")
self.repalce(tc, tc_temp)
app = {"logTest": self.logTest, "driver": self.driver, "path": tc_temp,
"device": self.udid, "platformName": self.platformName, "caseName": sys._getframe().f_code.co_name}
iOSapp = {"logTest": self.logTest, "driver": self.driver, "path": PATH("../yamls/iOS/home/firstOpen.yaml"),
"device": self.udid, "platformName":self.platformName, "caseName": sys._getframe().f_code.co_name}
page = PageOperate(app)
page.operate()
page.checkPoint()
def testSecondOpen(self):
app = {"logTest": self.logTest, "driver": self.driver, "path": PATH("../yamls/Android/home/secondOpen.yaml"),
"device": self.udid, "platformName": self.platformName, "caseName": sys._getframe().f_code.co_name}
tc = PATH("../yamls/home/secondOpen.yaml")
self.repalce(tc, tc_temp)
iOSapp = {"logTest": self.logTest, "driver": self.driver, "path": PATH("../yamls/iOS/home/secondOpen.yaml"),
"device": self.udid, "platformName": self.platformName, "caseName": sys._getframe().f_code.co_name}
app = {"logTest": self.logTest, "driver": self.driver, "path": tc_temp,
"device": self.udid, "platformName": self.platformName, "caseName": sys._getframe().f_code.co_name}
page = PageOperate(app)
page.operate()
page.checkPoint()
@classmethod
def setUpClass(cls):
super(HomeTest, cls).setUpClass()
@classmethod
def tearDownClass(cls):
super(HomeTest, cls).tearDownClass()
```
#### 6.Case入口
@ -443,15 +452,17 @@ Directory: /Users/zhulixin/Desktop/python-appium/Log/CrashInfo/iOS/Before/com.ap
Process finished with exit code 0
```
#### 11.最终log输出信息及路径
```buildoutcfg
../Log/
```
![](/uploads/photo/2018/ffcbafc0-06ff-4613-84a7-7f32bd70c82d.png!large)
#### 12.报告输出
```buildoutcfg
../Report/
```
1.Android
![](/uploads/photo/2018/5d9c8027-a3cb-429e-8d6a-3dee68aa97d1.png!large)
![](/uploads/photo/2018/9754aa6e-19d4-4ed7-a1b8-482a5f2b740c.png!large)
2.iOS
![](/uploads/photo/2018/02ae6200-e724-4d50-9ec9-9b9eb5f901be.png!large)
![](/uploads/photo/2018/9bc957b3-cd10-43c2-b174-e96749a5d884.png!large)
## 运行环境
@ -477,7 +488,6 @@ ipaPath = PATH("../app/xiaoying.ipa") # 测试的app路径
2.为了避免同一台PC上同时连接android和iOS设备时获取设备问题将runner文件两个平台分开处理
```
Android执行: python3 ../Runner/runner.py
iOS执行:python3 ../Runner/runner_iOS.py
```
@ -485,7 +495,6 @@ iOS执行:python3 ../Runner/runner_iOS.py
```buildoutcfg
find_str = 'XiaoYing-' # 待测app crashreport文件关键字
```
4.过滤待测app系统日志修改待测app关键字如此处的'XiaoYing'
```buildoutcfg
#获取系统日志过滤当前app的log如不需要获取系统日志注掉即可
@ -493,14 +502,15 @@ syslog_path = os.path.join(PATH("../Log/CrashInfo/iOS/"), "syslog.log")
sys_cmd = 'idevicesyslog -u ' + get_phone["udid"] + " |grep 'XiaoYing' > %s" % (syslog_path)
os.popen(sys_cmd)
```
## 目前的遗留问题
- email邮件发送尚未调试
- 控件集参数化
- 多设备执行还有点问题
- 当遇到有些用例比较麻烦必须单独写page层
- 因为对python的map方法不是很懂所以控件集参数化用了最原始最笨的字符串替换输出一个临时temp.yaml文件测试完成后再删除如果有对map熟悉的同学欢迎帮忙写个方法来处理感谢
## 后续计划
- 测试数据DB存储
- 结果集分析