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