UITesting自动化测试log日志

作者: 沈宥 | 来源:发表于2017-05-10 19:28 被阅读422次

1、XCTestSuite
官方解释:

@interface XCTestSuite : XCTest {
#ifndef __OBJC2__
@private
    id _internalImplementation;
#endif
}

+ (instancetype)defaultTestSuite;
+ (instancetype)testSuiteForBundlePath:(NSString *)bundlePath;
+ (instancetype)testSuiteForTestCaseWithName:(NSString *)name;
+ (instancetype)testSuiteForTestCaseClass:(Class)testCaseClass;

+ (instancetype)testSuiteWithName:(NSString *)name;
- (instancetype)initWithName:(NSString *)name NS_DESIGNATED_INITIALIZER;

- (void)addTest:(XCTest *)test;

@property (readonly, copy) NSArray <__kindof XCTest *> *tests;

@end

综上可知,该类可在任意地方获取已经建立的XCTestCase用例个数,可通过用例名、类名来查找具体的用例;也可通过属性获取用例数组后,遍历获取用例;
举个栗子:

    XCTestSuite *suite = [XCTestSuite defaultTestSuite];
    NSArray *array = suite.tests;
    for (XCTestCase *cases in array) {
        NSLog(@"%@",cases.description);
    }

运行结果:

屏幕快照 2017-05-10 18.17.06.png

2、获取完整log日志:
日志存储路径:
/Users/username/Library/Developer/Xcode/DerivedData/project/Logs/Test

屏幕快照 2017-05-10 19.09.21.png

(1)每个case执行结果截图在Attachments文件夹;

(2)case执行正确、错误数量:.plist文件

(3)log输出:.log文件

(4)已经点击成功的控件元素本地缓存:Cache.db

备注:当某个用例执行失败时,无日志保存。根据这些成功后的信息,后续想完成一个log显示系统

3、解析并简单显示测试结果
(1)通过.plist文件找出所有的执行case详细信息:

143FBFCF-07F1-4A32-BFD5-D2FA0D8F9C5F.png

其中,ActivitySummaries中包含了所有的case信息,但是我们只需要拿到:
Title:case信息;
UUID:截图保存的名称;
备注:关于UUID有一些又多层叠加,所以需要在子层中找到存在的截图名称,如下图中的第三层才是正确的:

6F4B3AFC-71A7-48EA-BE56-472A70AAF08F.png

(2)Python解析文件,并编写HTML给出简单的日志分析表:
首先安装PyH,使用方法点击此处

安装:
sudo python setup.py install

关于源码,见请GitHub

(3)在解析的过程中过滤了大量没有截图的信息:

def function_dictionary(rootPath,dictionary,title_array):
    title = str(dictionary['Title'])
    imagePath = append_image_path(rootPath,dictionary['UUID'])
    global isWait
    if "Synthesize event" in title:
        return title_array
    elif "Snapshot accessibility hierarchy for com.meelive.ingkee" in title:
        return title_array
    elif "Use cached accessibility hierarchy for com.meelive.ingkee" in title:
        return title_array
    elif "Unable to" in title:
        return title_array
    elif "Set Up" in title:
        return title_array
    elif "Terminate" in title:
        return title_array
    elif "Get" in title:
        return title_array
    elif "Find" in title:
        return title_array
    elif "Launch com.meelive.ingkee" in title:
        return title_array
    elif "Start Test" in title:
        return title_array
    else:
        title_array.append({title:imagePath})
        return title_array
屏幕快照 2017-05-19 11.56.19.png

结果展示页:

屏幕快照 2017-05-19 11.57.35.png

相关文章

  • UITesting自动化测试log日志

    1、XCTestSuite官方解释: 综上可知,该类可在任意地方获取已经建立的XCTestCase用例个数,可通过...

  • UITesting索引-iOS

    1.UITesting测试(1) 2.UITesting测试(2)

  • iOS单元测试之UI测试

    一、UI测试简介 1.1、什么是UITesting 2015 年,Apple 发布了 UI 自动化测试框架 XCU...

  • 选择UITesting自动化的几个理由

    1、关于选用UITesting 作为自动化测试框架,考虑过一下几方面:(1)测试代码编写的成本(2)是否可调式(3...

  • 自动化框架设计

    自动化设计的框架如下图所示 框架的说明 data:excel表格存放测试数据 log:记录执行日志 page:主要...

  • 2019-01-21mysql 日志管理

    一、错误日志error log 二、binary log (二进制日志) 1,启动二进制日志 2,测试二进制日志 ...

  • iOS UI测试

    iOS UI测试 前言 UITesting 和 Accessibility 测试app的功能和UI界面是否正确, ...

  • Laravel框架 之 日志和错误

    本文的示例代码参考log & bugsnag 目录 日志 错误 日志 测试 测试 错误 注意 错误处理在app/E...

  • log日志管理监听自动化测试

    首先创建一个配置文件 配置的文件如下: 具体有什么不明白的可以访问https://docs.python.org/...

  • UITesting深入测试

    1、物理按键 2、判断是否可点击 3、CollectionView滑动操作 4、cell查找并点击 5、UITes...

网友评论

    本文标题:UITesting自动化测试log日志

    本文链接:https://www.haomeiwen.com/subject/lvbgtxtx.html